根据Spring Boot gradle plugin reference,我应该能够将jar的特定模式打包到特定层中(以制作更好的docker文件)。
我对文档中使用的模式匹配感到困惑。这是一个示例:
tasks.getByName<BootJar>("bootJar") {
layered {
isIncludeLayerTools = true
application {
intoLayer("spring-boot-loader") {
include("org/springframework/boot/loader/**")
}
intoLayer("application")
}
dependencies {
intoLayer("module-dependencies") {
include("com*:*:*")
}
intoLayer("dependencies")
}
layerOrder = listOf("dependencies", "spring-boot-loader", "module-dependencies", "application")
}
}
我不了解的是此模式匹配在以下条件上进行匹配:
intoLayer(“模块依赖性”){ include(“ com *::”) }
它是罐子的组,工件和版本吗?是罐子的名字吗?
如果我有一个包含模块aa,ab和ac的多模块项目,分别相当于aa.jar,ab.jar和ac.jar和一个外部依赖项org.something:anartifact:25等同于anartifact-25。 jar我需要添加什么模式以在一层中包含aa,ab和ac,在另一层中包含其他所有依赖项?
答案 0 :(得分:3)
对于模块依赖性,模式为<group>:<artifactid>:<version>
。您可以使用尾部通配符来匹配项的子集,或者完全省略项以匹配所有项。例如,com.fasterxml.jackson::
将匹配com.fasterxml.jackson
组中的所有工件和所有版本。
对于多模块项目,默认情况下,artifactid
是项目的名称,group
是{{ 1}}。
通常在根项目的group
文件中定义组,例如:
build.gradle
然后,您可以在应用程序模块中如下定义层模式:
build.gradle
我已将示例上传到https://github.com/philwebb/mutli-module-layered-gradle-example,该示例在完整的项目中进行了显示。