Raf*_*afa 5 maven-plugin spring-boot
我有一个带有测试类的Maven项目,该类src/test/java/MyDevClass仅用于开发/测试目的。我想在命令行启动spring-boot-maven-plugin时使用它mvn spring-boot:run。
因此,我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>
Run Code Online (Sandbox Code Playgroud)
但是,出现以下错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [MyDevClass]
Caused by: java.lang.ClassNotFoundException: MyDevClass
Run Code Online (Sandbox Code Playgroud)
足够有趣的是,我还有另一个使用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>
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
Spring-boot maven 插件不会将当前模块的测试源(和资源)包含到类路径中,即使useTestClasspath即使设置为 true,
我使用详细日志记录运行了分叉执行(-X,并且该插件列出了分叉 JVM 类路径。测试班不包括在内。
如果您查看插件源代码(撰写本文时版本为 1.5.3),您useTestClasspath会发现该标志仅在方法中使用addDependencies。
我认为有两种解决方法
将target/test-classes目录添加到运行类路径:
<directories>
<directory>${project.build.testOutputDirectory}</directory>
</directories>
Run Code Online (Sandbox Code Playgroud)
对于较旧的插件版本使用:
<folders>
<folder>${project.build.testOutputDirectory}</folder>
</folders>
Run Code Online (Sandbox Code Playgroud)
这里的问题是该文件夹被添加到类路径的开头,而测试文件最好在其末尾。
使用测试类和资源创建另一个 Maven 模块,并将其添加为<scope>test</scope>依赖项。
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |