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

使用Gradle构建具有Kotlin DSL依赖项的jar,gradle,kotlin,gradle-kotlin-dsl,Gradle,Kotlin,Gradle Kotlin Dsl,这个问题已经有了答案:尽管它是针对Groovy的 我将gradle与kotlin dsl一起使用,但代码不兼容。我试图通过以下几种方式使其发挥作用: tasks.withType<Jar> { configurations["compileClasspath"].forEach { file: File -> copy { from(zipTree(file.absoluteFile)) } } } ta

这个问题已经有了答案:尽管它是针对Groovy的

我将gradle与kotlin dsl一起使用,但代码不兼容。我试图通过以下几种方式使其发挥作用:

tasks.withType<Jar> {
    configurations["compileClasspath"].forEach { file: File ->
        copy {
            from(zipTree(file.absoluteFile))
        }
    }
}
tasks.withType{
配置[“compileClasspath”]。forEach{file:file->
抄袭{
from(zipTree(file.absoluteFile))
}
}
}
虽然这不起作用。因此,如何在gradle中使用
kotlin dsl
包含依赖项?

这将起作用:

tasks.withType<Jar>() {
    configurations["compileClasspath"].forEach { file: File ->
        from(zipTree(file.absoluteFile))
    }
}
tasks.withType(){
配置[“compileClasspath”]。forEach{file:file->
from(zipTree(file.absoluteFile))
}
}
copy{…}
中没有必要,您应该从调用JAR任务本身的


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

我总是得到错误:
无法更改配置的依赖项:compile”,在它包含在依赖项解析中之后。
是否在代码示例(或改进的示例)之后添加依赖项。一旦您读取了配置中的依赖项,它就被解决了,您无法添加依赖项。@lu.koerfer这就是问题所在。我在这之后有了
依赖项
块。Thx。@热键:请更新您的解决方案,并指出依赖项块必须在
任务之前。withType…
。“我想这对将来的其他人可能有用。”格恩特说。