从Spring Boot 1.4应用程序导入maven dependecies

时间:2016-11-16 13:30:42

标签: java spring maven spring-boot maven-dependency

在更改构建jar文件的结构后,我将从现有的Spring-Boot应用程序中的类导入到我的新应用程序中时遇到了麻烦。

他们更改了jar文件,以便应用程序拥有的类现在位于BOOT-INF / classes中,而不是jar文件的根目录。

但是当我对这个Spring-boot应用程序有一个普通的maven依赖时,我无法从这个应用程序导入现有的类,也不能在我的新应用程序中导入我的新类。

在他们改变结构之前它工作得很好......

2 个答案:

答案 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'
}