Gradle 在kotlin生成文件中执行已注册的任务
我需要将用Groovy编写的gradle构建脚本转换为Kotlin。问题是,在一个任务中的Groovy构建文件中,会执行之前定义的另一个任务。然而,在Kotlin中似乎没有对此的支持,至少我在API中找不到任何支持 我研究了API并搜索了类似的问题,但没有找到任何有用的东西 Groovy代码如下所示:Gradle 在kotlin生成文件中执行已注册的任务,gradle,kotlin,groovy,gradle-kotlin-dsl,Gradle,Kotlin,Groovy,Gradle Kotlin Dsl,我需要将用Groovy编写的gradle构建脚本转换为Kotlin。问题是,在一个任务中的Groovy构建文件中,会执行之前定义的另一个任务。然而,在Kotlin中似乎没有对此的支持,至少我在API中找不到任何支持 我研究了API并搜索了类似的问题,但没有找到任何有用的东西 Groovy代码如下所示: task doSomething () { ... } task anotherTask () { ... doSomething.execute() ... } 这个电
task doSomething () {
...
}
task anotherTask () {
...
doSomething.execute()
...
}
这个电话怎么翻译成Kotlin
doSomething.execute()
Kotlin是静态类型的。因此,如果Kotlin无法为您推断,您必须知道
doSomething
和anotherTask
的任务类型<代码>执行让我相信它是某种执行任务。以你为例:
val doSomething = tasks.register("doSomething", JavaExec::class.java) {
main = "com.example.Example"
}
val anotherTask = tasks.register("anotherTask") {
doSomething.get().exec()
}
但是,看起来您只是想在另一个任务之前执行doSomething
,因此您需要:
val doSomething = tasks.register("doSomething", JavaExec::class.java) {
main = "com.example.Example"
}
val anotherTask = tasks.register("anotherTask") {
dependsOn(doSomething)
}
如果不知道任务的类型,就很难给你正确的答案。Kotlin是静态类型的。因此,如果Kotlin无法为您推断,您必须知道
doSomething
和anotherTask
的任务类型<代码>执行让我相信它是某种执行任务。以你为例:
val doSomething = tasks.register("doSomething", JavaExec::class.java) {
main = "com.example.Example"
}
val anotherTask = tasks.register("anotherTask") {
doSomething.get().exec()
}
但是,看起来您只是想在另一个任务之前执行doSomething
,因此您需要:
val doSomething = tasks.register("doSomething", JavaExec::class.java) {
main = "com.example.Example"
}
val anotherTask = tasks.register("anotherTask") {
dependsOn(doSomething)
}
在不知道任务类型的情况下,很难给你正确的答案。你不应该对任务调用execute()
。相反,正确设置输入、输出和依赖项,如果需要,Gradle将为您调用任务
比如:
tasks {
val doSomething by registering {
doLast {
println("running doSomething")
}
}
val anotherTask by registering {
dependsOn(doSomething)
doLast {
println("Running anotherTask")
}
}
}
然后:
决不能对任务调用execute()
。相反,正确设置输入、输出和依赖项,如果需要,Gradle将为您调用任务
比如:
tasks {
val doSomething by registering {
doLast {
println("running doSomething")
}
}
val anotherTask by registering {
dependsOn(doSomething)
doLast {
println("Running anotherTask")
}
}
}
然后:
方法
execute
在Gradle中不再可用(从5.0开始),因此这不是Groovy和Kotlin之间的差异造成的。它通常出现在较旧的版本中,但实际上不应该使用,因为它可能会干扰Gradle任务执行系统。Gradle中不再提供方法execute
(自5.0以来),因此这不是Groovy和Kotlin之间的差异造成的。它通常出现在较旧的构建中,但实际上不应该使用,因为它可能会干扰Gradle任务执行系统。