我有一个spring-boot项目,其中所有集成测试都在单独的模块中,该模块在spring-boot-maven-plugin
阶段使用integration-test
启动应用程序模块并对其执行套件。
这个结构工作正常,直到升级到1.4.0.RELEASE。现在我得到一个ClassNotFoundException
。
在我检查了“1.4.0”jar结构后,我发现它与“1.3.6”不同,并且所有的包都不再是顶层,而是在BOOT-INF等文件夹中(见屏幕截图)下面)并且类加载器不能再找到“mainClass”中定义的包。
有人知道修复它,以及新版本中是否可以使用此解决方案?
提前致谢!
ITest模块:
<!-- dependency to the app module -->
<dependency>
<groupId>com.company.app</groupId>
<artifactId>app-module</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<configuration>
<mainClass>com.company.app.RunServer</mainClass>
</configuration>
<executions>
<execution>
<id>pre-integration-test</id>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>post-integration-test</id>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
申请模块:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:2)
可以找到如何将Spring Boot应用程序用作依赖关系的解决方案here。
基本上,在你的maven构建中,添加:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
这将导致您的主要jar
工件(将在标准maven构建中构建的工件)正常结构化,因此您可以依赖它,spring-boot-maven-plugin
将重新打包jar使用exec
分类器将此可执行文件转换为第二个工件。
答案 1 :(得分:0)
答案 2 :(得分:0)