使用gradle用kotlin-dsl构建带有依赖项的jar



已经有一个问题的答案:如何将所有依赖项包括在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")
    }
}

相关内容

  • 没有找到相关文章

最新更新