使用 Gradle 构建带有 Kotlin-DSL 依赖项的 jar

gue*_*ter 5 gradle kotlin gradle-kotlin-dsl

这个问题已经有了答案:如何将所有依赖项包含在一个 jar 文件中,尽管它是针对 Groovy 的

我正在使用 gradlekotlin-dsl并且代码不兼容。我尝试使用几种方法使其工作,包括:

tasks.withType<Jar> {
    configurations["compileClasspath"].forEach { file: File ->
        copy {
            from(zipTree(file.absoluteFile))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这不起作用。那么如何kotlin-dsl在 gradle 中包含依赖呢?

hot*_*key 5

这将起作用:

tasks.withType<Jar>() {
    configurations["compileClasspath"].forEach { file: File ->
        from(zipTree(file.absoluteFile))
    }
}
Run Code Online (Sandbox Code Playgroud)

不需要copy { ... },您应该调用fromJAR 任务本身。

注意:Gradle 不允许在解决依赖项后更改它们。这意味着上面的块只有在dependencies { ... }配置之后才能执行。

  • 您是否在代码示例(或改进的代码示例)之后添加依赖项。一旦您阅读了配置中的依赖项,它就会被解析并且您无法添加依赖项。 (2认同)