在“.execute()”操作期间如何检索输出和错误,如果有错误则无法完成任务?是否会自动处理project.copy {...}和类似任务的错误?是否有可以使用的project.sync {...}或project.exec {...}等效?
class SomeTask extends DefaultTask {
@TaskAction
def translate() {
def execCommand = "<SOME_COMMAND>"
println 'Command\n' + execCommand
println execCommand.execute().text
}
}
运行任务时,它会发出一些错误,然后将其标记为成功。代码应该检测execute()命令何时失败并使整个任务失败。
Translated 6 files: 301 errors, 0 warnings
:base:someTask (Thread[main,5,main]) completed. Took 3.387 secs.
BUILD SUCCESSFUL
我还使用以下命令将STDOUT记录到信息日志中以便于访问(因此您只需添加-I即可查看日志)。有没有推荐的替代方案?
class MyPlugin implements Plugin<Project> {
void apply(Project project) {
project.with {
logging.captureStandardOutput LogLevel.INFO
...
答案 0 :(得分:1)
project.exec {...}
可用于执行shell脚本。它的配置方式与Exec相同。请注意在将每个参数传递给args
方法之前,需要将每个参数拆分为单个值。
class SomeTask extends DefaultTask {
def otherFlags = "-n -E"
@TaskAction
def translate() {
project.exec {
executable "echo"
args "-e"
args otherFlags.split()
}
}
}
答案 1 :(得分:0)
而不是Groovy的String#execute
,通常最好使用Gradle的project.exec {}
(其配置方式与{{1}完全相同任务并允许重新路由标准输出/错误),如果命令返回非零退出代码,默认情况下将抛出异常。