如何使用gradle中Exec任务内部项目中的变量值?

如何使用gradle中Exec任务内部项目中的变量值?,gradle,Gradle,我正在尝试用gradle编写一个exec任务,它将在项目中使用一个变量集 大概是这样的: task upload(type: Exec) { executable "echo" args version } 这总是让我感到“不确定” 如果我做这样的任务 task upload << { println version } 任务上传谢谢你的帮助Mark Vieira 我发现编写自己的任务调用exec任务的方式与我需要的方式相同 像这样 task upload &

我正在尝试用gradle编写一个exec任务,它将在项目中使用一个变量集

大概是这样的:

task upload(type: Exec) {
   executable "echo"
   args version
}
这总是让我感到“不确定”

如果我做这样的任务

task upload <<  {
   println version
}

任务上传谢谢你的帮助Mark Vieira

我发现编写自己的任务调用exec任务的方式与我需要的方式相同

像这样

task upload << {
    exec {
     executable "echo"
     args version
    }
}

任务上载您在哪里定义
版本
?这两个示例之间的区别在于,一个在配置时评估,另一个在执行期间评估。根据您声明该变量的方式,可以确定其用法。在配置时对哪个变量进行评估?我仍然对配置时间和执行时间感到困惑。为什么一个在配置时评估,另一个在执行时评估?version是在方法incrementVersion()中设置的,该方法使用gradle.taskGraph.whenReady调用,我认为该方法在配置后运行。前者在配置时执行。您正在“配置”
Exec
任务,因此此代码在脚本评估期间(在运行任何任务之前)执行。在第二个示例中,您使用的是左移位运算符(有没有好的资源来解释配置任务和添加任务操作之间的区别?我已经阅读了第15章,也阅读了第15章-但显然我不明白。中有一些关于构建阶段的解释。需要记住的事情通常是在定义自己的任务或使用方法向任务添加操作时与
doLast
类似,该代码在执行期间正在运行。基本上,在所有其他情况下,构建脚本中的代码都是配置。