2016-11-16 58 views
1

说,你有以下任务:Gradle - 如何为Exec类型任务设置依赖项任务?

task commandA() { 
    doLast { 
    project.ext.ping = 'PING' 
    } 
} 

这将工作:

task commandB() { 
    dependsOn commandA 
    doLast { 
     println ping 
    } 
} 

这将失败:

task commandC(type: Exec) { 
    dependsOn commandA 
    commandLine "echo", ping 
} 

随着Could not find property 'ping' on task 'commandC'.错误消息。

那么,如何声明exec类型任务的依赖关系并在该依赖关系中设置一些变量呢?

回答

0

只是不要初始化doLast块中的变量,因为它已在执行阶段初始化,但commandLine "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闭合将在执行阶段进行wuth平安变量已经可用。

您可以在官方Gradle中阅读关于构建生命周期user guide

相关问题