问题描述
对于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映像重用到另一个映像,从而导致磁盘使用率很高。
我们要实现的是为这些依赖项获得一个单独的层,因为它们是与父项目一起构建的。
LE#1
一个快速的解决方法是强制子项目的生成jar,因为它们具有与父项目相同的版本,可以放弃版本控制并强制可重复性属性。
./ projB / build.gradle
jar {
archiveFileName = "${project.name}.jar"
preserveFileTimestamps false
reproducibleFileOrder true
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)