使用Gradle构建一个与Kotlin-DSL相关的jar

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

我用kotlin-dsl使用gradle,代码不兼容。 我尝试使用几种方法使其工作,包括:

 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 { ... }后才能执行。