嗨,我正在尝试实现这样的事情:
在父绒球中,我有
<profile>
<activation>
<property>
<name>Compile</name>
<value>${project.artifactId}</value>
...
这样,如果我在父 pom 下运行 mvn -DCompile=mod1 install
,它只会将配置文件设置应用于模块 1,而不会应用于其他模块。
同样,如果我有
<profile>
<activation>
<property>
<name>Compile</name>
<value>${project.packaging}</value>
...
然后在父 POM 下运行 mvn -DCompile=war install
,它只会将配置文件设置应用于要打包为战争的设置,而不是 jar 或 POM。
我试过了,但它没有按预期工作。我错过了什么吗?请帮忙。
附言无需建议解决方法,因为我只对此方法感兴趣。如果是这样的话,简单地回答是不可能的。谢谢
不起作用,因为...
首先:
- 配置文件激活适用于系统属性,不适用于 Maven 属性。
以及为什么它从父母到孩子都不起作用:
- 父 POM 中的属性甚至在子 POM 出现在图片中之前就已展开。
许多人在你之前来到这里,但失败了。
有人可能想知道你真正想做什么。您是否正在从同一源项目构建不同的工件?也许你需要更多的Maven模块来处理事情。
是的,您可以根据一个或多个参数(如env
变量)激活配置文件。
<project>
...
<profiles>
<profile>
<id>development</id>
<activation>
<property>
<name>!environment.type</name>
</property>
</activation>
</profile>
</profiles>
</project>
如果您尝试根据 X 进行不同的打包,则可以使用程序集插件并在那里施展魔法http://maven.apache.org/plugins/maven-assembly-plugin/
有关激活属性的更多信息
- http://books.sonatype.com/mvnref-book/reference/profiles-sect-activation.html
- http://earlyandoften.wordpress.com/2011/02/09/disable-maven-profile/
从Maven 3.0开始,POM中的配置文件也可以基于以下条件激活 设置.xml中活动配置文件的属性。
您可以在此处检查给出的示例:
http://maven.apache.org/guides/introduction/introduction-to-profiles.html