【问题标题】:Execute shell script in gradle cannot see echo output在 gradle 中执行 shell 脚本看不到回显输出
【发布时间】:2016-08-16 16:04:52
【问题描述】:

我使用这个问题Execute shell script in Gradle 作为参考,但是,我不知道如何让它工作。

这是我的 gradle 文件:

...

task myPrebuildTask(type: Exec) {
    println "Hello world from gradle"
    commandLine 'sh', './myScript.sh'
}

build.dependsOn myPrebuildTask

我在 myScript.sh

中有这个

#!/bin/sh
echo "脚本文件中的Hello world"

但是,每当我运行脚本 gradle assembleDebug 时,我只能看到“来自 gradle 的 Hello world”,而看不到“来自脚本文件的 Hello world”。

Yuchens-iMac:MyApplication yuchen$ gradle assembleDebug
Hello world from gradle
Incremental java compilation is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
...

为什么?

【问题讨论】:

  • 尝试将您的任务明确称为gradle myPrebuildTask
  • Hello world from gradle 正在配置阶段打印。我怀疑你调用gradle assembleDebug时你的任务根本没有被执行
  • 您可能在错误的位置查找打印的字符串。 “Hello world from gradle”在配置阶段打印,但“Hello world from script file”在执行阶段打印,所以它应该在输出的更下方。

标签: android shell gradle


【解决方案1】:

我把它放在一个新的build.gradle

defaultTasks 'myPrebuildTask'

task myPrebuildTask(type: Exec){
    println "Hello world from gradle"
    commandLine 'sh', './myScript.sh'
}

运行 gradle -q 会导致:

> gradle -q
Hello world from gradle
Hello world from the script file

显然,任务打印命令输出就好了。

您的情况可能会发生一些事情。当您调用 gradle assembleDebug 时,您设置的任务依赖性可能不足以触发您的自定义任务,或者,由于两个打印行实际上在不同的 gradle 阶段打印,第二行可能在您的日志中的其他位置 - 您还没有发布整个输出。

【讨论】:

  • 感谢defaultTasks-q 的提示。我试过你的脚本,它们确实有效。但这并不是造成我的问题的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多