代码之家  ›  专栏  ›  技术社区  ›  Guillaume

Maven2:如何在父和子POM之间共享插件配置?

  •  14
  • Guillaume  · 技术社区  · 14 年前

    我正在尝试减少maven pom文件中的复制/粘贴。

    我们有一个主pom和许多从主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 回复  |  直到 7 年前
        1
  •  18
  •   Thales Valias    7 年前

    您可以将父插件包装在 <pluginManagement> 标签。

       <build> 
           <pluginManagement>
               <plugins>
                   <plugin> ... </plugin>
               </plugins>
           </pluginManagement>
       </build>
    

    然后,当子插件在其构建标记中声明插件时,它们将继承配置。

        2
  •  2
  •   Thales Valias    7 年前

    你试过使用 plugin management 马文的特点?它将允许您将配置信息从父pom.xml推送到pom.xml子文件中:

       <build> 
           <pluginManagement>
               <plugins>
                   <plugin>your_plugin</plugin>
               </plugins>
           </pluginManagement>
       </build>
    

    现在,并不是所有的插件都像org.apache.maven.plugins组中的插件做得那么好。可能需要在执行元素之间移动配置部分。