如何在执行期间将变量传递给Exec?我想编写一个传递 gradle 文件,它将执行我当前的构建命令,让我将配置从构建服务器计划移动到源代码控制管理的 build.gradle 文件。这也是我在为更大的项目做准备时了解 gradle 的一部分。
我想使用不同的变量进行配置执行命令。在 ant 中,我会设置我的属性,然后通过嵌套的 env 块将它们传递给 exec。在 gradle 中,我正在填充一个与任务环境合并的地图,但这不起作用。
我无法将 '<<' 添加到 checkenv,因此任务代码执行之前填充的 buildEnvironmentVariables 或在错误的范围内。我知道我没有遵循正确的任务配置。
请提供建议或指出手册/文档的正确部分。
build.gradle - 执行 gradle checkenv
def buildEnvironmentVariables = [:]
task setEnv() << {
buildEnvironmentVariables['JAVA_OPTS']="-XX:ErrorFile=foo/logs"
}
task checkenv(dependsOn: 'printEnv', type:Exec) {
workingDir '../..'
executable = 'cmd'
environment << buildEnvironmentVariables
println "buildEnvironmentVariables = " << buildEnvironmentVariables['JAVA_OPTS']
args = ['/c','set','JAVA_OPTS']
}
我是否应该只在项目相当于“目标”时将任务添加到项目中,并将诸如 exec 之类的操作封装在顶级任务中?
添加的任务就像 ant 目标,封装的任务就像 ant 任务?
def buildEnvironmentVariables = [:]
task setEnv() << {
buildEnvironmentVariables['JAVA_OPTS']="-XX:ErrorFile=foo/logs"
}
task checkenv(dependsOn: 'printEnv') << {
println "buildEnvironmentVariables = " << buildEnvironmentVariables['JAVA_OPTS']
ext.check = exec() {
workingDir '../..'
executable = 'cmd'
environment << buildEnvironmentVariables
args = ['/c','set','JAVA_OPTS']
}
}
谢谢