从 Spring Boot 1.4 应用程序导入 Maven 依赖项

Import maven dependecies from a Spring Boot 1.4 application

在他们更改构建 jar 文件的结构后,我无法将 类 从现有的 Spring-Boot 应用程序导入到我的新应用程序中。

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

但是当我对这个 Spring-boot 应用程序有一个正常的 Maven 依赖时,我无法从这个应用程序导入现有的 类 并导入我的新应用程序中的新 类 .

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

此处的解决方案是重构您的代码,以便您在两个应用程序中所依赖的 类 在单独的项目中可用。

现在您可以通过在两个项目中导入依赖项来使用这些 类:

<dependency>
    <groupId>org.example</groupId>
    <artifactId>example-shared</artifactId>
</dependency>

确保您没有在这个新创建的共享项目中使用 Spring boot maven 插件,并且您可能也不应该使用任何 Spring boot starters,因为它们加载了很多您可能不需要的依赖项。

我发现实际上可以使用 Spring 引导应用程序作为依赖项。即使它很可能不被推荐。但在某些情况下,它只会让事情变得更容易。 此解决方案意味着您无法使用可执行存档。

"The executable archive cannot be used as a dependency as the executable jar format packages application classes in BOOT-INF/classes. This means that they cannot be found when the executable jar is used as a dependency."

我的问题的解决方案是在 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'
}