我有一个带有一些插件的父pom。在我的孩子pom中,我想排除一个插件。
我该怎么做?
答案 0 :(得分:9)
我有一个类似的要求在孩子中运行一些插件但不是父POM。我通过在父POM中声明<skip>true</skip>
来实现这一点。
父pom条目位于
之下<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<inherited>false</inherited>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
</dependency>
</dependencies>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
子项目pom条目位于
之下<plugins>
<plugin>
<groupId>eviware</groupId>
<artifactId>maven-soapui-plugin</artifactId>
<version>4.0.0</version>
<configuration>
<settingsFile>site-service-web/src/test/soapui/soapui-settings.xml</settingsFile>
<projectFile>site-service-web/src/test/soapui/PodifiSite-soapui-project.xml</projectFile>
<outputFolder>site-service-web/target/surefire-reports</outputFolder>
<junitReport>true</junitReport>
<exportwAll>true</exportwAll>
<printReport>true</printReport>
</configuration>
</plugin>
</plugins>
答案 1 :(得分:5)
您可以在<pluginManagement>
内声明父pom中的所有插件。在每个子节点中,您可以声明该子节点使用的插件。这样,您可以根据需要包含或排除插件。
您也可以查看相关的SO discussion。
答案 2 :(得分:3)
您可以在pluginManagement部分
中定义父pom中的所有插件 <pluginManagement>
<plugins>
...
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>generate-sources</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeTypes>tar.bz2</includeTypes>
<outputDirectory>${project.basedir}/target/dependencies</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
在父母和子女之后你可以控制这个插件的执行阶段
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
如果将其粘贴到父pom中,请不要忘记选项<inherited>false</inherited>
,它会禁用子pom中的执行继承。
答案 3 :(得分:1)
您可以使用由属性激活的profile来确定是否使用该插件。默认情况下,可以激活该属性,并且您不想使用它的一个项目可以包含用于排除插件的属性值。