spring-boot-maven-plugin> = 1.4.0 jar结构更改

时间:2016-09-21 12:46:37

标签: spring-boot spring-boot-maven-plugin

我有一个spring-boot项目,其中所有集成测试都在单独的模块中,该模块在spring-boot-maven-plugin阶段使用integration-test启动应用程序模块并对其执行套件。 这个结构工作正常,直到升级到1.4.0.RELEASE。现在我得到一个ClassNotFoundException

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

有人知道修复它,以及新版本中是否可以使用此解决方案?

提前致谢!

jar structure < 1.4.0

jar structure >= 1.4.0

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>

3 个答案:

答案 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)

嗯,最近测试中有很多变化,所以你检查了upgrade notes for 1.4.0吗?

答案 2 :(得分:0)