【问题标题】:maven-assembly-plugin causing tests to run twicemaven-assembly-plugin 导致测试运行两次
【发布时间】:2011-04-07 15:02:57
【问题描述】:

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

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

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

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

谢谢, 史蒂文

【问题讨论】:

    标签: maven-2 maven-assembly-plugin


    【解决方案1】:

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

    assembly:assembly 目标在执行自身之前调用生命周期阶段包的执行并在命令行上运行它因此将调用 package 之前的任何 phase。这包括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)。

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

    【讨论】:

    • 嗨,我已经在包上自动运行程序集(阶段设置为包)。但是,它只是自己运行单元测试,即使只是在运行时:
    • @Steven 如果您绑定了正确的目标,即single,则不会。我怀疑你绑定了assembly,它只能在命令行上使用。
    • 我正在使用附加的目标。这是为了在发布期间将其上传到我的存储库。在使用附加目标之前,我尝试使用 build-helper-plugin 附加工件,但它抱怨具有相同 ID 的工件(或类似的奇怪东西)。稍后我将再进行一次单一目标。谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 2020-06-13
    • 2011-05-30
    • 2014-09-05
    • 1970-01-01
    • 2012-02-11
    • 2012-03-25
    相关资源
    最近更新 更多