[英]Using Gradle to build a jar with dependencies with Kotlin-DSL
这个问题已经有了答案:如何在 jar 文件中包含所有依赖项,尽管它适用于 Groovy
我将 gradle 与kotlin-dsl
一起使用,并且代码不兼容。 我尝试使用几种方法使其工作,包括:
tasks.withType<Jar> {
configurations["compileClasspath"].forEach { file: File ->
copy {
from(zipTree(file.absoluteFile))
}
}
}
虽然这不起作用。 那么如何在 gradle 中包含使用kotlin-dsl
的依赖项?
这将有效:
tasks.withType<Jar>() {
configurations["compileClasspath"].forEach { file: File ->
from(zipTree(file.absoluteFile))
}
}
copy { ... }
没有必要,你应该from
JAR任务本身调用。
注意:Gradle在解析后不允许更改依赖项。 这意味着只有在配置了dependencies { ... }
之后才能执行上面的块。
withType<Jar> {
enabled = true
isZip64 = true
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
archiveFileName.set("$project.jar")
from(sourceSets.main.get().output)
dependsOn(configurations.compileClasspath)
from({
configurations.compileClasspath.get().filter {
it.name.endsWith("jar")
}.map { zipTree(it) }
}) {
exclude("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.