4

我有一个使用程序集插件的 Maven 项目。我通常通过运行创建我的工件: mvn clean verify assembly:assembly (我有集成测试,我想单独运行单元测试)。

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

有没有办法告诉程序集插件不要运行测试?我很想分两步运行它: 1. mvn clean verify 2. 如果上一个命令成功,运行 mvn assembly:assembly -DskipTests=true

但是,这有点笨拙,宁愿使用单个命令。

谢谢,史蒂文

4

1 回答 1

2

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

assembly:assembly目标在执行自身之前调用生命周期阶段包的执行并在命令行上运行它因此将调用之前的任何阶段package。这包括test阶段。

有没有办法告诉程序集插件不要运行测试?

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

<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>

如果您不希望在集成测试失败时创建程序集,则在稍后阶段(例如post-integration-testverify)绑定它。

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

于 2010-09-03T03:41:40.117 回答