我有一个maven项目,其测试类位于src/test/java/MyDevClass
,仅用于开发/测试目的。当我使用命令行mvn spring-boot:run
启动spring-boot-maven-plugin时,我想使用它。
所以,我的pom.xml
包含:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- TODO: Will create a maven profile and have useTestClasspath only for development/testing -->
<useTestClasspath>true</useTestClasspath>
</configuration>
</plugin>
</plugins>
</build>
但是,我收到以下错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [MyDevClass]
Caused by: java.lang.ClassNotFoundException: MyDevClass
有趣的是,我有另一个使用tomcat7-maven-plugin的项目,它运行正常:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<useTestClasspath>true</useTestClasspath>
</configuration>
</plugin>
我缺少什么?
答案 0 :(得分:1)
即使useTestClasspath
设置为true,Spring-boot maven插件也不会将当前模块的测试源(和资源)包含在类路径中。
我运行了一个带有详细日志记录(-X
标志到Maven)的分叉执行,并且该插件列出了分叉的JVM类路径。不包括测试课程。
如果您查看插件more than just rectangle(撰写本文时的版本1.5.3),则标记useTestClasspath
仅用于addDependencies
方法。
我看到两个选项作为解决方法
在插件配置中使用<folders>
<folders>
<folder>${project.build.testOutputDirectory}</folder>
</folders>
这里的问题是文件夹被添加到类路径的开头,而测试文件最好是它。
<scope>test</scope>
依赖项。