gpt4 book ai didi

java - 用gradle排除compileOnly依赖项中已经包含的包

转载 作者:行者123 更新时间:2023-12-03 05:03:56 26 4
gpt4 key购买 nike

我正在寻找一种自动/简单的方法,以将所有依赖项从最终jar中排除,如果它们已经包含在最终 jar 中不存在但仅在外部加载的仅编译依赖中。我正在使用Kotlin DSL进行Gradle配置。
我当前的jar配置:

withType<Jar> {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveClassifier.set("core")

from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
exclude(
"kotlin/**"
)
}
例如,我实现了使用蛇YAML作为依赖项的 jackson yaml格式。但是,蛇YAML也存在于一个compileOnly依赖项中,不应包含在最终的JAR中。
如果我正确理解,则runtimeClasspath仅包含实现依赖关系,还包含它们的所有依赖关系,这就是问题所在

最佳答案

您可以有一个自定义任务来创建要打包的jar列表,​​在代码段下方显示了runtime-compileonly

task runCP() {
def runList = configurations.runtimeClasspath.asList()
def compileOnlyList = configurations.compileOnly.asList()
println(runList.join("\n"))
println("----")
println(compileOnlyList.join("\n"))
println("====")
println(runList.size() + " | " + runList.removeAll(compileOnlyList) + " | " + runList.size())
println(runList.join("\n"))
}

关于java - 用gradle排除compileOnly依赖项中已经包含的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62740597/

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