从命令行取消激活maven配置文件

Cal*_*ter 63 java command-line-interface maven

我在maven设置文件〜/ .m2/settings.xml中默认激活了配置文件.

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

mvn -P!profileActivatedByDefault
Run Code Online (Sandbox Code Playgroud)

GPI*_*GPI 99

是的,你有正确的方法.来自maven个人资料的用户指南

停用个人资料

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

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

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

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

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

mvn groupId:artifactId:goal -P \!profile-1
Run Code Online (Sandbox Code Playgroud)

要么

mvn groupId:artifactId:goal -P '!profile-1'
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案有效但我们需要逃避'!' Linux终端上的字符:`mvn groupId:artifactId:goal -P \!profile-name` (23认同)

Sha*_*ris 25

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

mvn groupId:artifactId:goal -P!profile-1
-bash: !profile: event not found
Run Code Online (Sandbox Code Playgroud)

使用' - '执行以下操作:

mvn groupId:artifactId:goal -P-profile1
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

mvn groupId:artifactId:goal -P\!profile1
Run Code Online (Sandbox Code Playgroud)


Spa*_*kOn 6

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

mvn groupId:artifactId:goal -P !profile-1,!profile-2
Run Code Online (Sandbox Code Playgroud)

这可用于停用标记为 activeByDefault 的配置文件或否则将通过其激活配置激活的配置文件。 参考 Maven 文档

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

  • 你是对的,通过`-P`*激活*一个配置文件将忽略其他配置文件(例如`activeByDefault`或<activation>),但仅/独占使用停用语法(`!`前缀)只会停用这些配置文件,并且不覆盖 `activeByDefault` 或 `<activation>` 声明 (6认同)