在更改构建jar文件的结构后,我将从现有的Spring-Boot应用程序中的类导入到我的新应用程序中时遇到了麻烦。
他们更改了jar文件,以便应用程序拥有的类现在位于BOOT-INF / classes中,而不是jar文件的根目录。
但是当我对这个Spring-boot应用程序有一个普通的maven依赖时,我无法从这个应用程序导入现有的类,也不能在我的新应用程序中导入我的新类。
在他们改变结构之前它工作得很好......
答案 0 :(得分:3)
这里的解决方案是重构您的代码,以便您在两个应用程序中依赖的类在单独的项目中可用。
现在,您可以通过在项目中导入依赖项来使用这些类:
<dependency>
<groupId>org.example</groupId>
<artifactId>example-shared</artifactId>
</dependency>
确保您没有在这个新制作的共享项目中使用Spring启动maven插件,并且您可能不应该使用任何Spring启动程序,因为它们会加载许多您可能不需要的依赖项。
答案 1 :(得分:1)
我发现实际上可以使用Spring Boot应用程序作为依赖项。尽管很可能不推荐。但在某些情况下,它只是让它变得更容易。 此解决方案意味着您无法使用可执行存档。
“可执行存档不能用作依赖项,因为可执行jar格式打包BOOT-INF / classes中的应用程序类。这意味着当可执行jar用作依赖项时无法找到它们。”
我的问题的解决方案是在spring-boot-maven-plugin中包含一个配置分类器。像Maven一样:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
或类似于Gradle:
bootRepackage {
classifier = 'exec'
}