2

spring-boot-maven-plugin我有一个 spring-boot 项目,其中所有集成测试都在单独的模块中,该模块在该阶段启动应用程序模块integration-test并针对它执行套件。在升级到 1.4.0.RELEASE 之前,此构造运行良好。现在我得到一个ClassNotFoundException.

在我检查了“1.4.0”jar 结构后,我发现它与“1.3.6”不同,所有包都不再位于顶层,而是在 BOOT-INF 等文件夹中(见下面的屏幕截图)和类加载器无法再找到“mainClass”中定义的包。

有人对修复它有什么想法吗?这个解决方案在新版本中是否可行?

jar 结构 < 1.4.0

在此处输入图像描述

jar 结构 >= 1.4.0

在此处输入图像描述

测试模块:

<!-- 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>
4

3 回答 3

2

可以在此处找到有关如何使用 Spring Boot 应用程序作为依赖项的解决方案。

本质上,在您的 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

于 2017-03-22T16:27:00.367 回答
0

有一个很好的文档来更改类和包名称https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes

于 2016-09-21T14:00:19.993 回答
0

嗯,最近测试有很多变化,你有没有查看1.4.0 的升级说明

于 2016-09-21T13:12:13.583 回答