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

这是我的gradle文件:

...

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

build.dependsOn myPrebuildTask

我在 myScript.sh 中有这个



但是,每当我运行脚本 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
...

为什么?

最佳答案

我把这个放在一个新的 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 阶段打印,因此第二行可能在您的日志中的其他位置 - 您还没有发布整个输出。

关于android - 在gradle中执行shell脚本看不到echo输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36803742/

10-09 06:21
查看更多