我想从通过 Ant 任务执行的命令中获取退出代码
exec
。请参阅下面的代码示例。
import groovy.ant.AntBuilder
def cmd = 'ls -l'
def ant = new AntBuilder()
ant.echo('Hello, Ant Builder!')
ant.exec(executable: 'bash', resultproperty: 'my.cmd.exitCode') {
arg(value: '-c')
arg(value: cmd)
}
ant.echo('Exit code is ${my.cmd.exitCode}')
// below return null
def cmdExitCode = ant.properties['my.cmd.exitCode']
println "Exit code: ${cmdExitCode}"
println "Properteis: ${ant.properties}"
以下是部分输出:
[echo] Hello, Ant Builder!
[exec] total 64
...
[echo] Exit code is 0
Exit code: null
Properteis: [saveStreams:true, current:null, antXmlContext:org.apache.tools.ant.helper.AntXMLContext@78411116, class:class groovy.ant.AntBuilder, antProject:org.apache.tools.ant.Project@aced190, project:org.apache.tools.ant.Project@aced190]
关于 exec 的 Ant 文档指出
outputproperty 应存储命令输出的属性名称。除非错误流被重定向到单独的文件或流,否则此属性将包含错误输出。
目前尚不清楚如何在 Groovy AntBuilder 中以编程方式访问此属性。
您在这里访问了错误的属性。每个
GroovyObject
都有
a getProperties
(或 Groovy 简写中的 properties
)。还有那个
来自 AntBuilder
正是用于“与”ant
“交谈”。
您要寻找的房产都在
Project
中,您可以
像这样访问构建器:
def cmdExitCode = ant.antProject.properties['my.cmd.exitCode']
// XXX ~~~~~~~~~~
println "Exit code: ${cmdExitCode}"