Spring 引导 "Thinner Fat Jar" - 将 jar 拆分为 2(应用程序/库)

Spring Boot "Thinner Fat Jar" - Split jar in 2 (app / libs)

我想将我的应用拆分成 2 个 fat jar (modules/libraries)。

我已经检查了“Spring Boot thin jar project”,它首先加载依赖项并缓存它们 运行 但我不能让它与多个本地模块一起工作。

仍然......我更愿意让我的第一种方法奏效。有什么想法吗?

Gradle 6.9.1(7.x 不能使用 thin jar)

Spring 引导 2.6.x

已编辑 (2022-02)

检查下面我的解决方案...

  • 创建2个项目,构建时,构建到2个JAR文件。

  • 项目 1(fat JAR)对项目 2 的引用。

  • Spring Boot fat JAR(已嵌入 Tomcat),将调用另一个 JAR。

我做到了我想做的事。

为此,我不得不将 gradle 中的 bootJar 任务扩展为 2 个任务,一个用于依赖项,一个用于我的库...

task bootJarDeps(type: org.springframework.boot.gradle.tasks.bundling.BootJar) {
  description "Generates JAR with just dependencies."
  exclude 'com.mypackage.**.jar'
  archiveName 'deps.jar'

  mainClass = 'com.mypackage.App'
  with bootJar
}

依赖项中的 mainClass 没有用,但仍然是任务所必需的。

task bootJarApp(type: org.springframework.boot.gradle.tasks.bundling.BootJar) {
  description "Generates JAR without dependencies."
  include 'com.mypackage.**.jar'
  mainClass = 'com.mypackage.App'
  archiveName 'app.jar'
  with bootJar
}