从命令行停用 Maven 配置文件

Posted

技术标签:

【中文标题】从命令行停用 Maven 配置文件【英文标题】:De-activate a maven profile from command line 【发布时间】:2014-10-01 19:28:21 【问题描述】:

我的 maven 设置文件 ~/.m2/settings.xml 中有一个配置文件默认激活

是否可以通过执行以下操作从命令行停用它:

mvn -P!profileActivatedByDefault

【问题讨论】:

【参考方案1】:

是的,你有正确的方法。 来自maven profiles user guide

停用个人资料

从 Maven 2.0.10 开始,可以使用命令行禁用一个或多个配置文件,方法是在其标识符前加上字符“!”或'-'如下图:

mvn groupId:artifactId:goal -P !profile-1,!profile-2

这可用于停用标记为 activeByDefault 的配置文件或将通过其激活配置激活的配置文件。

正如@Calfater 在 cmets 中所指出的,感叹号需要在大多数 shell(Linux 和 MacOS 上的 bash、zsh 和其他)中进行转义,但在 Windows 命令行中不需要。

转义机制依赖于 shell,但通常你可以这样做:

mvn groupId:artifactId:goal -P \!profile-1

或者

mvn groupId:artifactId:goal -P '!profile-1'

或者,作为Shaun Morris suggested below,使用- 代替!,但在-P 和配置文件之间没有空格

mvn groupId:artifactId:goal -P-profile-1,-profile2

【讨论】:

此解决方案有效,但我们需要转义“!” Linux 终端上的字符:mvn groupId:artifactId:goal -P \!profile-name @Calfater :确实,这值得编辑原帖。 转义字符要了我的命......在 Windows 中工作完美,谢谢。 @Calfater 在使用zsh 时也遇到感叹号问题。我只是将-P 放在这样的单引号之间:-P '!dev' @Derp :单引号禁用 zsh / bash / ... 插值。谢谢你的伎俩。【参考方案2】:

从 Maven 2.0.10 开始,可以使用命令行禁用一个或多个配置文件,方法是在其标识符前加上字符“!”或'-'如下图:

mvn groupId:artifactId:goal -P !profile-1,!profile-2

这可用于停用标记为 activeByDefault 的配置文件或将通过其激活配置激活的配置文件。 Refer Maven Doc

因为!感叹号是大多数命令行工具的特殊字符,您可能需要对其进行转义refer here

【讨论】:

你是对的,通过-P激活配置文件将忽略其他配置文件(例如activeByDefault 或),但仅/仅使用停用语法(! 前缀)只会停用这些配置文件,不会覆盖 activeByDefault<activation> 声明 文档已更改,现在-P 将添加除 activeByDefault 配置文件之外的配置文件:“此选项采用一个参数,该参数是要使用的配置文件 ID 的逗号分隔列表。当此选项为指定时,除了通过其激活配置或 settings.xml 中的 部分激活的任何配置文件之外,还将激活选项参数中指定的配置文件“ 感谢您提供最新信息。我不知道这改变了多久。 @SparkOn :这会改变您答案的有效性范围,您可能需要进行编辑以反映这一点。【参考方案3】:

在 Mac 上,尝试使用“!”时出现以下错误

mvn groupId:artifactId:goal -P!profile-1
-bash: !profile: event not found

使用“-”执行以下操作:

mvn groupId:artifactId:goal -P-profile1

您也可以这样做:

mvn groupId:artifactId:goal -P\!profile1

【讨论】:

linux 上相同(macOS 是基于 ux 的操作系统) 在 Windows 上相同,需要 '-' 字符来停用默认启用的配置文件

以上是关于从命令行停用 Maven 配置文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Maven 命令行运行 testng.xml

即使另一个配置文件被激活,如何保持 activeByDefault 的 Maven 配置文件处于活动状态?

Maven安装好后包下载的测试命令和配置变量的查看命令:mvn help:system

Maven的构建配置文件(Build Profiles)

maven配置文件中modules是啥意思

Maven C盘用户文件下没有.m2