我们说我有三个maven个人资料。
local-dev
ci
prod
现在我使用相同的插件配置ci
和prod
。我根本不想local-dev
使用它。所以它看起来像这样。
<profile>
<id>local-dev</id>
</profile>
<profile>
<id>ci</id>
<build>
<plugins>
<plugin>
<artifactId>A-PLUGIN</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<plugins>
<plugin>
<artifactId>A-PLUGIN</artifactId>
</plugin>
</plugins>
</build>
</profile>
事实证明A-PLUGIN
有很多配置,因为它在多个配置文件中完全相同,所以我喜欢将它定义在一个地方,只需从其所需的配置文件中引用它。
答案 0 :(得分:2)
让我引用the Maven forum:
我的想法是,如果一个人只是跳过配置文件作为解决每个条件情况的解决方案,那么构建将会像恐怖电影中的水弹一样成长为第二个头,你真的后悔了。
关键是配置文件通常是正确使用Maven的权宜之计。应该始终考虑它们&#34;最后的手段&#34;除非你知道自己在做什么。
在我的情况下,[...]配置文件非常适用于此,但我现在可以确切地看到九头蛇现在适合野兽的地方,除非绝对必要,否则不打算再用它们做任何事情。
我已经使用了个人资料。我是第二个观点。
从概念的角度来看,你有三个项目有很多甚至大部分的共同点。这就是Maven的POM层次结构及其继承发挥作用的地方:
main-parent
+- pom.xml ... containing declarations common to dev, ci & prod
+- dev
| +- pom.xml ... almost empty since everything's inherited from parent
| +- ... sources, resources, etc. ...
+- ci-prod-parent
+- pom.xml ... containing A-PLUGIN and other declarations specific to ci & prod
+- ci
| +- pom.xml ... almost empty since everything's inherited from parent(s)
| redirecting <build>/<[[test]source|resource>/]|
| [[test]output|testresource>/]directory> to ../../dev/...
+- prod
+- pom.xml ... almost empty since everything's inherited from parent(s)
redirecting <build>/<[[test]source|resource>/]|
[[test]output|testresource>/]directory> to ../../dev/...
有关要重定向的所有构建目录,请参阅 POM参考中的The BaseBuild Element Set,Resources和The Build Element Set。
请参阅Maven include another pom for plugin configuration:
唯一正确的答案是使用继承。
我也是第二个。