gpt4 book ai didi

gradle - 如何将环境传递给 gradle exec

转载 作者:行者123 更新时间:2023-12-03 23:00:54 24 4
gpt4 key购买 nike

如何在执行期间将变量传递给 Exec?我想编写一个 pass through gradle 文件,它将执行我当前的构建命令,让我将配置从构建服务器计划移动到源代码控制管理的 build.gradle 文件。这也是我了解 gradle 为更大项目做准备的一部分。

我想使用不同的变量来执行命令进行配置。在 ant 中,我会设置我的属性,然后通过嵌套的 env 块将它们传递给 exec。在 gradle 中,我正在填充与任务环境合并的 map ,但这不起作用。

我无法向 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 这样的 Action 时,我应该只向项目添加一个任务吗?

添加任务就像 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']
}
}

谢谢

最佳答案

从一个干净的石板开始可能会更好:

task doSomething(type: Exec) {
workingDir ...
executable ...
args ...
environment JAVA_OPTS: "-XX:ErrorFile=foo/logs"
}

然后您可以使用 gradle doSomething 运行此任务.这能实现你的目标吗?

关于gradle - 如何将环境传递给 gradle exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com