2015-08-25 22 views
5

Notları bir kabuk komut dosyası çalıştırıyorum, sorun kabuk komut dosyasının, devam etmeden önce çalıştırmam gereken bazı önkoşulları çalıştırmasıdır. kabuk komut dosyasını Gradle'dan çalıştırın ve bitirmek için bekleyin

Denedim aşağıdaki ancak gradle

sleep.sh 
echo 'hi1' 
sleep 1 
echo 'hi2' 
sleep 10 
echo 'bye' 


Gradle: 
task hello3(type: Exec) { 
println 'start gradle....' 
    commandLine 'sh','sleep.sh' 
println 'end gradle....' 
} 



Result: 
start gradle.... 
end gradle.... 
:hello3 
hi1 
hi2 
bye 
+2

Google'ı denediniz mi? https://fbflex.wordpress.com/2013/03/14/gradle-madness-execwait-a-task-that-waits-for-commandline-calls-to-be-ready/ – Marged

+1

Evet, bir şey bulmaya çalıştım. Gradle, kod uzantısı eklemeden desteklediğinden, belki de ExecWait'i yapan bazı Gradle komutlarını kaçırdığımı düşündüm. link için teşekkürler – 15412s

cevap

1

Senin sorunun Gradle build.gradle dosyasını ayrıştırır zaman println ifadeleri yürütür, o yürütür değil kabuk komut dosyası için başka bir çocuk sürecini açıyor gibi görünüyor görev.

şeyleri açıklığa kavuşturmak için aşağıdaki gibi doFirst ve doLast için println ifadeleri hareket etmeliyiz: Eğer gerekmez böylece inanıyorum

task hello3(type: Exec) { 
    doFirst { 
    println 'start gradle....' 
    } 
    commandLine 'sh','sleep.sh' 
    doLast { 
    println 'end gradle....' 
    } 
} 

, Gradle aslında başka bir şey yapmadan önce tamamlamak için komut dosyası bekler beklemek için özel bir şey yap.

Gradle, kabuk komut dosyasını her zaman bir alt işleminde başlatır.

İlgili konular