Maven 2 配置Maven插件以将其粘在一起

Maven 2 配置Maven插件以将其粘在一起,maven-2,maven-plugin,Maven 2,Maven Plugin,我有配置某些插件的父pom <pluginManagement> </plugins> <plugin> <artifactId>gmaven-plugin</artifactId> ... </plugin> <plugin> <artifactId>maven-resources-plugin</

我有配置某些插件的父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、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>

gmaven插件
maven资源插件
cargo-maven2-plugin
问题是何时我需要将第四个插件添加到集成测试过程中,例如我需要移动的自定义插件 通过所有的集成模块进行手动添加

您可以建议我删除
,以允许所有子级仅隐式使用它们。
是的,但在仅仅是“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>

我的团队
我的集成测试包
gmaven插件
maven资源插件
cargo-maven2-plugin
允许我像这样使用它

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

我的团队
我的集成测试包
真的
我想添加如下选项

<runOnce>true</runOnce>
true

为了能够在每次maven启动时只启动应用程序服务器和部署一次target。

AFAIK,没有办法声明可以在其他地方使用的插件包。。。但也有继承权


使用
部分中的
声明创建一个pom,并在集成测试项目中从该pom继承,怎么样?这看起来是可行的。

我不知道有哪种机制能完全满足你的需要。您最好的选择是使用在build部分而不是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>

建造
详细介绍了如何做到这一点

另一种选择是编写另一个插件,使用Maven共享io应用描述符
对于pom,该描述符可以定义合并到pom中的任意配置。另一个描述了如何做到这一点。

我写过这个案例。我不想用简单的pom来触发插件我不能在构建中使用父pom和节,因为我不想用pom和模块来触发插件。那么我列出的其他选项呢?我已经看过你的“共享io”答案,老实说,我不清楚如何使用它。好吧,这很公平,今天晚些时候我将详细说明。最大的问题是元素检查当前目录,并且不能在这里使用${project.basedir}。所以,如果您是从这个模块本身以外的目录安装的,它将不起作用。
<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>