能否在maven的pluginManagement中覆盖执行?

16
在父POM中,我有:
 <pluginManagement>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                       <id>execution 1</id>
                       ...
                    </execution>
                    <execution>
                       <id>execution 2</id>
                       ...
                    </execution>
                    <execution>
                       <id>execution 3</id>
                       ...
                    </execution>
                </executions>
            </plugin>
        <pluginManagement>

我的问题是:

  1. 是否可以在子项目中禁用某些<execution>,例如,只运行execution 3并跳过1和2?
  2. 是否可以完全覆盖子项目中的执行,例如,我在子项目中有一个exection 4,我只想运行这个execution而不运行父POM中的执行1,2,3。

1
提议使用每个项目的POM属性来激活配置文件的推荐解决方案行不通,因为只有全局系统属性可以用于此目的。 - Bernhard Stadler
1个回答

25

一个快速的选择是在覆盖每个执行步骤时使用<phase>none</phase>。例如,如果您只想运行第3个执行步骤,则可以在您的pom文件中执行以下操作:

<execution>
    <id>execution-3</id>
    <phase>none</phase>
</execution>
<build>
  <plugins>
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <executions>
            <execution>
                <id>execution 1</id>
                <phase>none</phase>
                ...
            </execution>
            <execution>
                <id>execution 2</id>
                <phase>none</phase>
                ...
            </execution>
            <execution>
                <id>execution 3</id>
                ...
            </execution>
        </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

需要注意的是,这不是官方记录的功能,因此对此的支持随时可能被取消。

建议的解决方案可能是定义具有定义了activation部分的profiles

<profile>
  <id>execution3</id>
  <activation>
    <property>
      <name>maven.resources.plugin.execution3</name>
      <value>true</value>
    </property>
  </activation>
  ...
在您的子项目中,您只需设置所需属性:
<properties>
    <maven.resources.plugin.execution3>true</maven.resources.plugin.execution3>
</properties>

有关配置激活的详细信息,请参见此处: http://maven.apache.org/settings.html#Activation


虽然我同意你应该使用配置文件来解决这些问题,但主要问题在于定义不清的父POM(无法修改)泄露了它们的配置。 - Dragas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接