我有一个多模块Maven项目,该项目输出2个不同版本的RPM。除了一些文件外,它们非常相似,并且de.dentrassi.maven RPM插件的配置看起来完全相同。
我正在查看是否有任何方法可以将配置放入.conf文件或其他内容中并使用它,因此我不必每次都要进行更改时都在两个模块中都编辑配置
我当前正在尝试导入配置,但是看不到任何可行的选项/
答案 0 :(得分:1)
您的多模块项目可能有一个共同的父pom。
您可以在其中定义插件(具有所有配置)-如果该插件不会“损害”其他模块,那么这才有意义。
或者,您可以在父pom的<pluginManagement>
部分中定义插件的配置。然后,您只需要在相关模块中定义(而不配置)插件即可。
答案 1 :(得分:1)
最简单的方法是定义一个配置块中所有执行通用的配置,如下所示:
<project..>
<modelVersion>4.0.0</modelVersion>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>..</groupId>
<artifactId>..</artifactId>
<version>1.0</version>
<configuration>
.. Global Configuration which is common for everything
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
因此,应在/可以在多模块构建的父pom文件中完成上述操作。现在,在从父级继承的模块中,您可以像这样配置它:
<project..>
<modelVersion>4.0.0</modelVersion>
<build>
<plugins>
<plugin>
<groupId>..</groupId>
<artifactId>..</artifactId>
<executions>
<execution>
<id>special-exec1</id>
<goals>..</goals
<phase>..</phase>
<configuration>
... supplemental configuration which is not part of the parent
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
因此,这将通过pluginManagement
在父级中定义通用配置,并且每个专业化都可以在子级中完成。
如果您想覆盖配置或对其进行增强,可以按照以下步骤进行操作:
<project..>
<modelVersion>4.0.0</modelVersion>
<build>
<plugins>
<plugin>
<groupId>..</groupId>
<artifactId>..</artifactId>
<executions>
<execution>
<id>special-exec1</id>
<goals>..</goals
<phase>..</phase>
<configuration>
<items combine.children="append">
<!-- combine.children="merge" is the default -->
<item>child-1</item>
</items>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
可以在POM documentation搜索combine.children
中阅读所有详细信息。如果还需要查看前面提到的文档,也可以防止从父级继承配置。