2016-04-22 2 views
3

Я использую этот вопрос 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, я могу видеть только «Он llo world from gradle ", но не" 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 
... 

Почему?

+1

попытка вызова свою задачу в явном виде 'Gradle myPrebuildTask' – RaGe

+1

The * Привет, мир от Gradle * печатается на этапе настройки. Я подозреваю, что ваша задача не выполняется вообще, когда вы называете «gradle assembleDebug» – RaGe

+0

Возможно, вы ищете печатную строку в неправильном месте. «Hello world from gradle» печатается в фазе конфигурации, но «Hello world from script file» печатается на этапе выполнения, поэтому он должен быть далее вниз. – Tomik

ответ

0

Если использовать вместо этого:

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

assembleDebug.dependsOn("myPrebuildTask") 
2

я поставил именно это в новом 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 или, поскольку две линии печати фактически печатаются на разных этапах градиента, вторая строка может быть в другом месте вашего журнала - вы не опубликовали весь текст вывод.

+0

Спасибо за советы для 'defaultTasks' и' -q'. Я пробовал с вашими скриптами, и они работают. Но это не было причиной моей проблемы. –

Смежные вопросы