maven配置文件是否为构建生命周期中的集成阶段执行?

时间:2015-05-20 00:36:20

标签: maven maven-plugin maven-profiles maven-lifecycle

以下是我项目中pom.xml的精简片段

   <profiles>

            <profile>
                <id>run-tests</id>
                <build>
                    <plugins>
                        <plugin>
                            <groupId>com.google.code.maven-replacer-plugin</groupId>
                            <artifactId>replacer</artifactId>
                            <version>1.5.2</version>
                            <executions>
                                <execution>
                                    <phase>pre-integration-test</phase>
                                    <goals>
                                        <goal>replace</goal>
                                    </goals>
                                </execution>
                            </executions>
                            <configuration>
                                <includes>
                                   ......
                                </includes>

                                <replacements>
                                    <replacement>
                                       .......
                                    </replacement>
                                </replacements>
                            </configuration>
                        </plugin>

                   <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-failsafe-plugin</artifactId>
                            <version>2.18.1</version>
                            <configuration>
                                ......
                            </configuration>
                            <executions>
                                <execution>
                                    <goals>
                                        <goal>integration-test</goal>
                                        <goal>verify</goal>
                                    </goals>
                                    <phase>integration-test</phase>
                                </execution>
                            </executions>
                        </plugin>
                     </plugins>
    </build>
</profile>
</profiles>

我有两个问题:

1)当我执行mvn clean package -Prun-tests时,会发生什么?我预计这些插件目标都不会在这里执行,因为它们必然会integration-test阶段。但是我看到这些目标被执行了为什么?

2) execution块中有两个目标是什么意思?请参阅上面的failsafe-plugin

由于

1 个答案:

答案 0 :(得分:1)

部分答案:

1)没办法。除非您还在主构建部分中配置了这些插件,以便分阶段运行直到打包。

你是如何确定插件已经运行的?你在maven输出中有以下内容吗?

  

[INFO] --- maven-failsafe-plugin:2.18.1:integration-test(默认)

     

[INFO] --- maven-failsafe-plugin:2.18.1:verify(默认)

2)这意味着两个目标(mojos)将在集成测试阶段执行。首先是集成测试目标,紧接着是验证目标。

注释:集成测试目标默认绑定到集成测试阶段,而验证目标绑定到验证阶段。所以你可以用这种方式配置故障安全插件:

    <executions>
      <execution>
        <goals>
          <goal>integration-test</goal>
          <goal>verify</goal>
        </goals>
      </execution>
    </executions>

请注意,相位是无效的