在父pom中定义的maven排除插件

时间:2011-01-29 21:33:53

标签: maven

我有一个带有一些插件的父pom。在我的孩子pom中,我想排除一个插件。

我该怎么做?

4 个答案:

答案 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来确定是否使用该插件。默认情况下,可以激活该属性,并且您不想使用它的一个项目可以包含用于排除插件的属性值。