gpt4 book ai didi

gradle - 在配置阶段之后运行commandLine会在gradle的 future 版本中引起问题吗?

转载 作者:行者123 更新时间:2023-12-03 03:19:04 27 4
gpt4 key购买 nike

我正在gradle脚本上工作,在那里我正在获取hg存储库的修订版,然后使用该修订版来标记以下任务的存储库,这工作正常。我担心的是我在配置阶段之后触发了命令行,这可能会在gradle的 future 版本。还有其他方法可以完成这些任务吗?

task hgRev(type: Exec, dependsOn: UpdateRepo) {
commandLine 'hg', 'id', '-i', "${project.rootDir}"
standardOutput = new ByteArrayOutputStream()
ext.hash = {
return standardOutput.toString()
}
}

task tagHg(type:Exec, dependsOn: hgRev) {
doLast {
if (execResult.exitValue == 0) {
project.logger.info("Succesfully Created the tag \"Build $cbversion\"")
} else {
project.logger.info("It failed.Please check the Bamboo logs for the reason")
}
}
doFirst {
def hash = tasks.hgRev.hash()
commandLine 'hg', 'tag', '-r', "$hash", "Build $cbversion"

}

}

最佳答案

您可以使用exec块和execute()方法代替Exec任务,这将使许多事情变得更容易:

// simple method, not a task
def hgRev() {
def hashStdOut = new ByteArrayOutputStream()
exec {
commandLine 'hg', 'id', '-i', "${project.rootDir}"
standardOutput = hashStdOut
}
return hashStdOut.toString().replaceAll('\\+', '').trim()
}

task tagHg(dependsOn: UpdateRepo) {
doLast {
def hash = hgRev()

def cmd = ["hg", "tag", "-r", hash, "Build $cbversion"]
def sout = new StringBuilder(), serr = new StringBuilder()

Process proc = cmd.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
println "out> $sout err> $serr"

if (proc.exitValue() == 0) {
project.logger.info("Succesfully Created the tag ")
} else {
project.logger.info("It failed.Please check the Bamboo logs for the reason")
}
}
}

关于gradle - 在配置阶段之后运行commandLine会在gradle的 future 版本中引起问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741819/

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