当插件目标执行时:声明阶段之前或之后?

时间:2013-11-19 14:58:07

标签: maven maven-2 maven-3 maven-plugin

我有一个关于maven pom的问题。我有这个pom.xml

<plugins>
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <echo>Hello world!</echo>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>
</plugins>

执行目标运行时?包装阶段之前或之后?

(对于Maven生命周期,请参阅Maven lifecycle

2 个答案:

答案 0 :(得分:6)

插件目标是在<= strong>声明阶段(package)开始之后,以及下一阶段(pre-integration-test)开始之前执行

在这个scenerio maven命令中

mvn package

应打印Hello World

一个阶段的多次执行:

  

注意:在Maven 2.0.5及更高版本中,绑定到阶段的多个目标是   但是,按照与在POM中声明的顺序相同的顺序执行   不支持同一插件的多个实例。多   同一插件的实例被分组以一起执行   在Maven 2.0.11及以上版本中订购。

  

当给出与特定阶段匹配的多个执行时,它们   以POM中指定的顺序执行,并继承   执行首先执行。

来源:Introduction to the Build Lifecycle

答案 1 :(得分:0)

如果您已经给出它将在包阶段执行,导致您明确定义它在包阶段执行。如果您希望在程序包阶段之前执行它,则需要使用prepare-package阶段而不是package