Spring @Autowire 没有通过`mvn verify`找到bean
Spring @Autowire does not find beans through `mvn verify`
我在 https://github.com/poggs/spring-autowire-it-problem 有一个 Spring(不是 Spring 启动)项目。
当运行通过IntelliJ IDEA进行集成测试ExampleComponentIT
时,两个测试都通过了,代码可以找到bean ExampleComponent
。 运行 与 mvn verify
的集成测试失败,因为找不到 ExampleComponent
.
我想要的是 mvn verify
能够找到 ExampleComponent
,因为它作为 CI 构建过程的一部分执行。
谁能指出我哪里错了?
当运行 maven-surefire-plugin
时,特别是3.0.0-M5,通过mvn clean verify
,目录target/classes
不在类路径上。此目录包含集成测试所需的已编译 Java 代码。
将以下内容添加到 pom.xml
中的 maven-failsafe-plugin
配置可解决问题:
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>target/classes</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
或者,降级到 3.0.0-M4 也可以。
将其命名为集成测试没有意义,例如ExampleComponentIT
,如果你想从 target/classes
.
加载 类
版本 3.0.0-M5 是正确的,您应该正确构建或保证 JAR 文件按预期工作,然后 maven-failsafe-plugin
将在集成测试中正常工作。
Surefire 和 Failsafe 的区别在于 Failsafe 可能会在 verify
阶段失败,而 Surefire 会在 test
阶段失败。此外,Failsafe 插件使用 JAR 文件而不是 target/classes
,这是集成测试所期望的,因为 package
阶段发生在 integration-test
和 verify
.[=19 阶段之前=]
Peter,我已经通过临时解决方法解决了这个问题
mvn verify -Dfailsafe.useModulePath=false
修复已经完成,将在3.0.0-M6版本中发布。那里不再需要解决方法 useModulePath=false。
我在 https://github.com/poggs/spring-autowire-it-problem 有一个 Spring(不是 Spring 启动)项目。
当运行通过IntelliJ IDEA进行集成测试ExampleComponentIT
时,两个测试都通过了,代码可以找到bean ExampleComponent
。 运行 与 mvn verify
的集成测试失败,因为找不到 ExampleComponent
.
我想要的是 mvn verify
能够找到 ExampleComponent
,因为它作为 CI 构建过程的一部分执行。
谁能指出我哪里错了?
当运行 maven-surefire-plugin
时,特别是3.0.0-M5,通过mvn clean verify
,目录target/classes
不在类路径上。此目录包含集成测试所需的已编译 Java 代码。
将以下内容添加到 pom.xml
中的 maven-failsafe-plugin
配置可解决问题:
<configuration>
<additionalClasspathElements>
<additionalClasspathElement>target/classes</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
或者,降级到 3.0.0-M4 也可以。
将其命名为集成测试没有意义,例如ExampleComponentIT
,如果你想从 target/classes
.
版本 3.0.0-M5 是正确的,您应该正确构建或保证 JAR 文件按预期工作,然后 maven-failsafe-plugin
将在集成测试中正常工作。
Surefire 和 Failsafe 的区别在于 Failsafe 可能会在 verify
阶段失败,而 Surefire 会在 test
阶段失败。此外,Failsafe 插件使用 JAR 文件而不是 target/classes
,这是集成测试所期望的,因为 package
阶段发生在 integration-test
和 verify
.[=19 阶段之前=]
Peter,我已经通过临时解决方法解决了这个问题
mvn verify -Dfailsafe.useModulePath=false
修复已经完成,将在3.0.0-M6版本中发布。那里不再需要解决方法 useModulePath=false。