gpt4 book ai didi

spring-boot - 在 Spring Boot 中构建分层 jar 时,如何在层中包含多模块项目 jar?

转载 作者:行者123 更新时间:2023-12-02 02:40:09 24 4
gpt4 key购买 nike

根据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("模块依赖项") {包含(“com*::”)}

它是 jar 的组、工件和版本吗?这是 jar 的名字吗?

如果我有一个多模块项目,其中包含模块 aa、ab 和 ac,相当于 aa.jar、ab.jar 和 ac.jar,以及外部依赖项 org.something:anartifact:25 相当于 anartifact-25。 jar 我需要添加什么模式才能在一层中包含 aa、ab 和 ac,并在另一层中包含所有其他依赖项?

最佳答案

对于模块依赖项,模式为 <group>:<artifactid>:<version> 。您可以使用尾随通配符来匹配项目的子集,或完全省略该项目以匹配所有内容。例如,com.fasterxml.jackson::将匹配 com.fasterxml.jackson 中的所有工件和所有版本组。

对于多模块项目,默认情况下 artifactid是项目名称,groupgroup 的值build.gradle 中设置的值.

通常在根项目的 build.gradle 中定义组文件,例如:

allprojects {
group "com.example"
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
}

然后,您可以在应用程序模块中定义图层模式,如下所示:

bootJar {
layered {
application {
intoLayer("spring-boot-loader") {
include("org/springframework/boot/loader/**")
}
intoLayer("application")
}
dependencies {
intoLayer("module-dependencies") {
include("com.example:*:*")
}
intoLayer("dependencies")
}
layerOrder = [ "dependencies", "spring-boot-loader", "module-dependencies", "application" ]
}
}

我已将示例上传至 https://github.com/philwebb/mutli-module-layered-gradle-example这在一个完整的项目中显示了这一点。

关于spring-boot - 在 Spring Boot 中构建分层 jar 时,如何在层中包含多模块项目 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63763154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com