我的maven设置文件~/.m2/settings.xml中有一个默认激活的配置文件。
是否可以通过命令行来取消激活它,类似于以下操作:
mvn -P!profileActivatedByDefault
我的maven设置文件~/.m2/settings.xml中有一个默认激活的配置文件。
是否可以通过命令行来取消激活它,类似于以下操作:
mvn -P!profileActivatedByDefault
确实,你走对了路。 来自maven profiles user guide
停用一个配置文件
从Maven 2.0.10版本开始,可以通过在标识符前面加上'!'或'-'的方式来停用一个或多个配置文件,如下所示:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
这可以用于停用被标记为activeByDefault的配置文件或者通过其激活配置而将其激活的配置文件。
正如@Calfater在评论中指出的那样,在大多数shell(Linux和MacOS上的bash、zsh和其他shell)中需要转义感叹号,但在Windows命令行中不需要。
转义机制取决于shell,但通常可以执行以下操作:
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
在 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
-P
激活配置文件会忽略其他配置文件(例如 activeByDefault
或 <activation>),但仅使用去激活语法(!
前缀)将仅停用这些配置文件,并不会覆盖 activeByDefault
或 <activation>
的声明。 - GPI-P
将添加配置文件以及activeByDefault配置文件:"此选项需要一个参数,即逗号分隔的要使用的配置文件ID列表。当指定此选项时,除了通过其激活配置或settings.xml中的<activeProfiles>部分激活的任何配置文件外,还将激活指定在选项参数中的配置文件。" - Jacob van Lingen
mvn groupId:artifactId:goal -P \!profile-name
。 - Calfaterzsh
时也遇到了感叹号的问题。我只需在单引号之间加上-P
,就像这样:-P '!dev'
。 - Kirill