【发布时间】:2014-10-01 19:28:21
【问题描述】:
我的 maven 设置文件 ~/.m2/settings.xml 中有一个配置文件默认激活。
是否可以通过执行以下操作从命令行停用它:
mvn -P!profileActivatedByDefault
【问题讨论】:
标签: java maven command-line-interface
我的 maven 设置文件 ~/.m2/settings.xml 中有一个配置文件默认激活。
是否可以通过执行以下操作从命令行停用它:
mvn -P!profileActivatedByDefault
【问题讨论】:
标签: java maven command-line-interface
是的,你有正确的方法。 来自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
【讨论】:
mvn groupId:artifactId:goal -P \!profile-name
zsh 时也遇到感叹号问题。我只是将-P 放在这样的单引号之间:-P '!dev'
从 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 中的 在 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
【讨论】: