我正在尝试减少maven pom文件中的复制/粘贴。
我们有一个主要的pom和许多继承自主人的儿童项目。
我想分享一个复杂的插件定义,如:
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<configuration>
<!-- many xml lines here -->
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>assemble</goal>
<goal>generate-daemons</goal>
<goal>create-repository</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo.appassembler</groupId>
<artifactId>appassembler-booter</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
当这个插件定义在项目pom中时,包装工作做得很好 当定义移动到父pom(in或in)时,包装甚至都没有启动。
是否可以共享插件配置?怎么样?
- 在第一个答案后编辑---
我试过以下几点:
- 将我的XL包装插件配置放在我父pom的元素中
- 在我的项目pom中的元素中添加以下行:
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
</plugin>
...
</plugins>
但它不起作用...... 这可能有什么问题?
- 上次编辑 -
我想我得到了什么问题:
插件重用声明应在配置文件构建中声明
我在一个始终启用的插件中完成了它,现在它正常工作。
非常感谢。
答案 0 :(得分:18)
您可以将父项的插件包装在<pluginManagement>
标记中。
<build>
<pluginManagement>
<plugins>
<plugin> ... </plugin>
</plugins>
</pluginManagement>
</build>
子插件将在他们的构建标记中声明插件时继承配置。
答案 1 :(得分:2)
您是否尝试过使用Maven的plugin management功能?它允许您将配置信息向下推送到父pom.xml中的子pom.xml文件:
<build>
<pluginManagement>
<plugins>
<plugin>your_plugin</plugin>
</plugins>
</pluginManagement>
</build>
现在,并非所有插件都与org.apache.maven.plugins组中的插件一样好。可能需要在执行元素之间移动配置部分。