maven2:如何在父子pom之间共享一个插件配置?

时间:2010-11-10 15:00:18

标签: maven-2 plugins

我正在尝试减少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>

但它不起作用...... 这可能有什么问题?

- 上次编辑 - 我想我得到了什么问题:
插件重用声明应在配置文件构建中声明 我在一个始终启用的插件中完成了它,现在它正常工作。

非常感谢。

2 个答案:

答案 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组中的插件一样好。可能需要在执行元素之间移动配置部分。