从命令行停用Maven配置文件


75

我的Maven设置文件〜/ .m2 / settings.xml中默认激活了一个配置文件。

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

mvn -P!profileActivatedByDefault

Answers:


120

是的,的确,您有正确的方法。从Maven配置文件用户指南

停用个人资料

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

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

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

正如@Calfater在评论中指出的那样,感叹号需要在大多数shell(bash,zsh以及Linux和MacOS上的其他shell)中转义,尽管不是在Windows命令行上。

转义机制取决于外壳,但是通常您可以:

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

要么

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

或者,如Shaun Morris在下面建议的那样,使用-代替!,但和配置文件之间没有空格-P

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

28
此解决方案有效,但我们需要转义“!” Linux终端上的字符: mvn groupId:artifactId:goal -P \!profile-name
Calfater,2015年

@Calfater:的确,这值得编辑原始帖子。
GPI 2015年

逃脱角色正在杀死我...在Windows中的工作无懈可击。谢谢。
cabaji99

1
@Calfater也有使用感叹号的问题zsh。我只是-P在这样的单引号之间:-P '!dev'
Kirill

@Derp:单引号禁用zsh / bash / ...内插。谢谢你的把戏。
Calfater

32

在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的操作系统)
mirec

同样在Windows中,“ - ”字符需要去激活默认启用的配置
AntJavaDev

5

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

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

这可用于停用标记为activeByDefault的配置文件,或通过其他方式通过其激活配置激活的配置文件。 参考Maven文档

由于!惊叹号是大多数命令行工具的特殊字符,因此您可能需要参考此处将其转义


6
没错,通过激活配置文件-P将忽略其他配置文件(例如,activeByDefault或<activation>),但是仅/排他地使用停用语法(!前缀)将仅停用这些配置文件,并且不会覆盖activeByDefault<activation>声明
GPI

更改了文档,现在-P除了activeByDefault配置文件外,还将添加配置文件:“此选项接受一个以逗号分隔的配置文件ID列表的参数。当指定此选项时,该选项中指定的配置文件参数会被激活配置文件或settings.xml中的<activeProfiles>部分激活的配置文件激活。”
Jacob van Lingen

感谢您提供最新信息。我不知道这已经改变了多久了。@SparkOn:这会更改您答案的有效性范围,您可能需要进行编辑以反映此问题。
GPI
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.