maven-2 – maven-assembly-plugin导致测试运行两次

我有一个maven项目,我正在使用程序集插件.

我通常通过运行来创建我的工件:

mvn clean验证程序集:程序集

(我有集成测试,我想单独运行到单元测试).

当它运行时,程序集插件正在运行单元测试本身.
这导致它们运行两次.

有没有办法告诉程序集插件不要运行测试?
我很想通过两个步骤来执行此操作:
1. mvn清洁验证
2.如果上一个命令成功,运行mvn assembly:assembly -DskipTests = true

但是,这有点笨拙,宁可单一命令.

谢谢,
史蒂芬

最佳答案

When this runs, the assembly plugin is running the unit tests itself. This causes them to be run twice.

assembly:assembly目标在执行自身之前调用生命周期阶段包的执行,并且在命令行上运行它将因此在包之前调用任何phase.这包括测试阶段.

Is there a way I can tell the assembly plugin not to run the tests?

不.我的建议是将程序集创建为构建生命周期的一部分,而不是在命令行上调用插件,即在特定阶段绑定它.例如:

<project>
 ...
 <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <executions>
          <execution>
            <id>create-my-assembly</id>
            <phase>package</phase><!-- change this if not appropriate -->
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              ...
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

如果您不希望在集成测试失败时创建程序集,则在稍后阶段(例如,集成后测试或验证)将其绑定.

如果您不希望系统地创建程序集,请将上述配置放在配置文件中.

点赞