在gradle中执行shell脚本无法看到echo输出

时间:2016-04-22 21:41:25

标签: android shell gradle

我正在使用此问题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
...

为什么呢?

2 个答案:

答案 0 :(得分:2)

我把它放在一个新的CMS_LANGUAGES = { 'default': { 'fallbacks': ['en',], 'redirect_on_fallback':True, 'public': True, 'hide_untranslated': False, } }

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阶段打印,因此第二行可能位于您的日志中的其他位置 - 您还没有t发布了整个输出。

答案 1 :(得分:0)

应该改用:

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

assembleDebug.dependsOn("myPrebuildTask")