我在Ubuntu 18.04上使用Maven 3.6.0和OpenJDK8(也使用Alpine Linux进行了测试(。
我在项目的根目录中有一个pom.xml
,其中包括我的子模块:
...
<modules>
<module>mysubmodule</module>
</modules>
...
在mysubmodule
文件夹中,pom.xml
有一个我想根据传递给mvn
可执行文件的属性激活的配置文件:
...
<profile>
<id>my-profile</id>
<activation>
<property>
<name>activateMyProfile</name>
</property>
</activation>
...
</profile>
...
然后我执行mvn来启动构建,但配置文件从未被激活:
- 如果我从项目的根运行
mvn -DactivateMyProfile release:prepare
,配置文件将永远不会被激活,也永远不会运行 - 如果我从项目的根目录运行
mvn release:prepare
,配置文件将永远不会运行
我也尝试了相反的方法:
...
<profile>
<id>my-profile</id>
<activation>
<property>
<name>!doNotActivateMyProfile</name>
</property>
</activation>
...
</profile>
...
- 如果我从项目的根运行
mvn -DdoNotActivateMyProfile release:prepare
,配置文件仍然执行 - 如果我从项目的根运行
mvn release:prepare
,配置文件也会被执行
看起来mvn
无法看到通过命令行传递的属性。使用属性激活子模块中配置文件的正确方法是什么?
由于我使用的是maven发布插件,必须使用-Darguments
参数传递参数。
例如,正确的调用不是使用mvn -DactivateMyProfile release:prepare
,而是:mvn -Darguments=-DactivateMyProfile release:prepare
如果有多个参数,请使用mvn -Darguments="-DactivateMyProfile -DsomeOtherArg -DanotherArg=something" release:prepare