2016-04-21 74 views
0

我正在嘗試使用Gradle任務來運行Play服務,但是我發現Gradle任務將掛起(大概等待Play啓動腳本的返回值)。從Gradle運行服務

我正在從播放方面做簡單地說就是:

sbt dist 

將會產生一個.zip分佈(如「myproject.zip」),我再展開,我想運行此服務。

在搖籃邊,我想我會做這樣的事情:

task start(type: Exec) { 
    workingDir "myproject/bin" 
    commandLine './myproject' 
} 

這確實啓動播放服務就好了,但是搖籃任務將無限期掛起(直到你做一個控制+ C)。

來考慮去嘗試,最明顯的事情是這樣的:

task start(type: Exec) { 
    workingDir "myproject/bin" 
    commandLine 'nohup ./myproject &' 
} 

但是,在一個死衚衕結束:

Execution failed for task ':start'. 
> A problem occurred starting process 'command 'nohup ./playservicetemplate &'' 

看起來這是一個很常見的情況,所以我想知道是否有明顯的解決方案,我忽略了。

回答

0

也許還有更多的Gradle-ish方式來做到這一點,但我通過利用ProcessBuilder解決了這個問題。我的新任務是這樣的:

task start { 
    ProcessBuilder builder = new ProcessBuilder("./myproject") 
    builder.directory(new File("myproject/bin")) 
    builder.start() 
} 

很明顯,你可以更大膽的嘗試了很多與這個(「的Java的ProcessBuilder」的快速谷歌將淨賺你在的例子頁頁),但這會做的伎倆我目的。