Groovy AntBuilder:如何以编程方式从 Ant 任务 exec 获取进程退出代码

问题描述 投票:0回答:1

我想从通过 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 中以编程方式访问此属性。

groovy ant
1个回答
0
投票

您在这里访问了错误的属性。每个

GroovyObject
都有 a
getProperties
(或 Groovy 简写中的
properties
)。还有那个 来自
AntBuilder
正是用于“与”
ant
“交谈”。

您要寻找的房产都在

Project
中,您可以 像这样访问构建器:

def cmdExitCode = ant.antProject.properties['my.cmd.exitCode']
// XXX                ~~~~~~~~~~
println "Exit code: ${cmdExitCode}"
© www.soinside.com 2019 - 2024. All rights reserved.