代码之家  ›  专栏  ›  技术社区  ›  Steven

Maven程序集插件导致测试运行两次

  •  4
  • Steven  · 技术社区  · 14 年前

    我有一个Maven项目,我在其中使用程序集插件。 我通常通过运行以下命令来创建工件: MVN清理验证程序集:程序集 (我有集成测试,我希望它们单独运行到单元测试中)。

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

    有没有一种方法可以告诉程序集插件不要运行测试? 我想分两步来完成这项工作: 1。MVN清洁验证 2。如果上一个命令成功,请运行mvn assembly:assembly-dskiptests=true

    不过,这有点笨拙,更愿意使用单个命令。

    谢谢, 史蒂文

    1 回复  |  直到 14 年前
        1
  •  2
  •   Pascal Thivent    14 年前

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

    这个 assembly:assembly 目标 在执行自己之前调用生命周期阶段包的执行 因此,在命令行上运行它将调用 phase 之前 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-test verify )

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