配置Maven插件粘在一起(Configure Maven plugins to stick tog

2019-07-18 08:42发布

其配置某些插件我父POM

<pluginManagement>
   </plugins>
      <plugin>
         <artifactId>gmaven-plugin</artifactId>
         ...
      </plugin>
      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         ...
      </plugin>
      <plugin>
         <artifactId>cargo-maven2-plugin</artifactId>
         ...
      </plugin>
   </plugins>
</pluginManagement>

我有劲歌的树,是代表集成测试

A-\
   a1
   a2
B-\
   b1
   b2
C-\
   D-\
      d1
      d2

在每一个A,B,d的产品怎么办

<build>
   <plugins>
      <plugin>
         <artifactId>gmaven-plugin</artifactId>
      </plugin>
      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
      </plugin>
      <plugin>
         <artifactId>cargo-maven2-plugin</artifactId>
      </plugin>
   </plugins>
</build>

问题是,当我将需要第四插件添加到集成测试过程,例如我的自定义插件,我将需要通过全部的集成模块的移动和做手工添加。

您可以咨询我删除<pluginManagement>让所有的孩子只是含蓄地使用它们。 是的,但其中只是“POM”我不想插件做任何产品:创建一些资源,并把JBoss的配置目录。

我不知道是否有某种

<pluginsBundle>
   <groupId>my.group</groupId>
   <artifactId>my-integration-test-bundle</artifactId>
   <plugins>
      <plugin>
         <artifactId>gmaven-plugin</artifactId>
      </plugin>
      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
      </plugin>
      <plugin>
         <artifactId>cargo-maven2-plugin</artifactId>
      </plugin>
   </plugins>
</pluginsBundle>

要允许我使用它,就像

   <plugin>
      <groupId>my.group</groupId>
      <artifactId>my-integration-test-bundle</artifactId>
      <runOnce>true</runOnce>
   </plugin>

我想补充的选择像

<runOnce>true</runOnce>

要能够启动应用程序服务器和部署目标每行家发射一次。

Answer 1:

我不知道,不正是你所需要的机制。 最好的办法是定义在构建部分定义的,而不是pluginManagement部分这些插件父POM。 在这种情况下,插件配置将始终定义。 添加配置父轮廓意味着你可以行使这些插件的激活一些控制。

一个比较精细的考虑是,你可以通过一个文件的存在或不存在控制配置文件的激活。 这样,您就可以定义在父配置文件,但有它在该项目中停用,因为标记文件存在于父。 儿童项目不会在他们的源标记文件,以使配置文件将这些项目被激活。 您可以通过使用反向行为missing ,而不是exists如果,对于大多数项目是有道理的。

<profile>
  <id>build</id>
  <activation>
    <file>
      <missing>src/main/resources/build.marker</missing>
      <!-- or if you want to enable the profile when the file does exist:
      <exists>src/main/resources/build.marker</exists-->
    </file>
  </activation>
  <build>
    </plugins>
      <plugin>
        <artifactId>gmaven-plugin</artifactId>
        ...
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        ...
      </plugin>
      <plugin>
        <artifactId>cargo-maven2-plugin</artifactId>
        ...
      </plugin>
    </plugins>
  </build>
</profile>

或者,你可以尝试编写自定义插件与执行都在一个分叉的生命周期所需要的mojos一个生命周期。 我最近回答了另一个问题与如何做到这一点的详细信息。

另一种方法是编写使用Maven的共享-IO到的描述符应用到POM另一个插件,该描述符可以定义合并到POM任意配置。 另一个答案描述了如何可以做到这一点。



Answer 2:

据我所知,没有办法来声明,可以在其他地方使用的插件包......但有继承。

怎么样与创建POM <plugins>在声明<build>部分和集成测试项目,从这个POM继承? 这看起来就像是可行的。



文章来源: Configure Maven plugins to stick together