Gradle-如何为Exec类型的任务设置依赖项任务?
比如说,您有以下任务:Gradle-如何为Exec类型的任务设置依赖项任务?,gradle,Gradle,比如说,您有以下任务: task commandA() { doLast { project.ext.ping = 'PING' } } 这将有助于: task commandB() { dependsOn commandA doLast { println ping } } 这将失败: task commandC(type: Exec) { dependsOn commandA commandLine "e
task commandA() {
doLast {
project.ext.ping = 'PING'
}
}
这将有助于:
task commandB() {
dependsOn commandA
doLast {
println ping
}
}
这将失败:
task commandC(type: Exec) {
dependsOn commandA
commandLine "echo", ping
}
With在任务“commandC”上找不到属性“ping”。
错误消息
那么,如何为exec类型的任务声明依赖项并在该依赖项中设置一些变量呢 不要在
doLast
块中初始化变量,因为它在执行阶段得到初始化,但是命令行“echo”,ping
正试图在构建的配置阶段得到它
所以,你需要这样的东西:
task commandA() {
project.ext.ping = 'PING'
}
甚至没有任务,如下所示:
project.ext.ping = 'PING'
因为任何任务的配置都是始终执行的,即使任务的操作不会执行
另一种解决方案是使用exec操作,而不是exec任务,如下所示:
task commandA() {
doLast {
project.ext.ping = 'PING'
}
}
task commandC {
dependsOn commandA
doLast {
exec {
commandLine ping, "192.168.100.1"
}
}
}
在这种情况下,exec闭包将在执行阶段完成,此时ping变量已经可用
您可以在官方的Gradle中阅读有关构建生命周期的内容只是不要在
doLast
块中初始化变量,因为它是在执行阶段初始化的,但是命令行“echo”,ping
正试图在构建的配置阶段获取它
所以,你需要这样的东西:
task commandA() {
project.ext.ping = 'PING'
}
甚至没有任务,如下所示:
project.ext.ping = 'PING'
因为任何任务的配置都是始终执行的,即使任务的操作不会执行
另一种解决方案是使用exec操作,而不是exec任务,如下所示:
task commandA() {
doLast {
project.ext.ping = 'PING'
}
}
task commandC {
dependsOn commandA
doLast {
exec {
commandLine ping, "192.168.100.1"
}
}
}
在这种情况下,exec闭包将在执行阶段完成,此时ping变量已经可用
您可以在官方的Gradle中阅读构建生命周期