SpringBoot Gradle BootJar Gradle子项目专用层

问题描述

对于gradle子项目,bootJar>layered规范似乎无法将子项目与其他依赖项区分开。

这是用例:

projA
  |
  +-- projB

./ setting.gradle

rootProject.name = 'projA'
include 'projB'

./ build.gradle

dependencies {
  ...
  implementation project(':projB')
}

在我们的构建/发布流程中,我们没有使用SNAPSHOT依赖关系,而是每次父项目构建都将导致子项目的构建,而子项目又将创建一个带有新每个版本的版本。

例如:

build of projA -> projA.2.5.90345
               -> projB.2.5.90345

其中2是主要版本,5是次要版本,90345是buildId。

Gradle将此jar(projB.2.5.90345.jar)添加到依赖项池中,然后bootJar任务会将其捕获到依赖项层中。不利之处在于,依赖项层无法从Docker映像重用到另一个映像,从而导致磁盘使用率很高。

我们要实现的是为这些依赖项获得一个单独的层,因为它们是与父项目一起构建的。

1.4.0版本开始,臂架插件解决了该问题。

LE#1

一个快速解决方法是强制子项目的生成jar,因为它们具有与父项目相同的版本,可以放弃版本控制并强制可重复性属性

./ projB / build.gradle

jar {
    archiveFileName = "${project.name}.jar"
    preserveFileTimestamps false
    reproducibleFileOrder true
}

这可以确保它们不会从一个版本更改为另一个版本。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)