首页 > 解决方案 > Maven Failsafe Plugin 未将目标/类添加到类路径

问题描述

我对 Maven Failsafe 插件有以下默认配置:

  <plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.20</version>
    <executions>
      <execution>
        <id>default-integration-test</id>
        <phase>integration-test</phase>
        <goals>
          <goal>integration-test</goal>
        </goals>
      </execution>
      <execution>
        <id>default-verify</id>
        <phase>verify</phase>
        <goals>
          <goal>verify</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

文档指出,默认类路径按顺序包括target/test-classestarget/classes目录。但是,当我运行mvn clean installor时mvn integration-test,我没有将classes文件夹视为类路径的一部分。这会导致测试失败,因为我将源代码中的一个类注入到测试中,并且出现NoClassDefFound异常。

这是详细的输出:

[调试] test(compact) 类路径:test-classes package.jar javax.inject-1.jar cdi-api-1.2.jar ...

如您所见,该classes文件夹应该在项目依赖项之前添加,但事实并非如此。

但是,当我专门运行mvn failsafe:integration-test 目标而不是阶段时,类路径会classes立即包含test-classes并且测试成功,这与文档一致。

我对构建过程有什么不了解?为什么运行阶段与运行目标时类路径不同?classes即使在运行阶段时,我如何才能进入类路径?

标签: javamavenjunitclasspathmaven-failsafe-plugin

解决方案


推荐阅读