您好我正在努力实现这样的目标:
在父母pom中,我有
<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的设置。
我试过但它没有按预期工作。我错过了什么吗?请帮忙。
P.S。没有必要建议解决方法,因为我只对这种方法感兴趣。如果是这样的话,简单地回答它是不可能有理由的。谢谢
答案 0 :(得分:9)
自......以后它无效。
首先:
为什么它不会从父母到孩子们工作:
许多人在你面前失败了。
有人可能想知道你真正想要做什么。您是否在同一源项目中构建不同的工件?也许你还需要一些Maven模块来处理事情。
答案 1 :(得分:5)
是的,您可以根据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/
有关激活属性的更多信息
答案 2 :(得分:1)
从Maven 3.0开始,POM中的配置文件也可以基于激活 来自settings.xml的活动配置文件中的属性。
您可以查看此处给出的示例:
http://maven.apache.org/guides/introduction/introduction-to-profiles.html