已经有一个问题的答案:如何将所有依赖项包括在jar文件中
我正在将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 { ... }
中不需要,您应该在JAR任务本身上调用from
。
注意: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")
}
}