如何使用属性激活maven子模块中的配置文件



我在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

最新更新