从Gradle运行Play服务

时间:2016-04-21 15:53:58

标签: gradle playframework

我正在尝试使用Gradle任务来运行Play服务,但我发现Gradle任务将挂起(可能是等待Play引导脚本的返回值)。

我在Play方面所做的只是:

sbt dist

这会产生一个.zip发行版(例如' myproject.zip'),然后我将其扩展到我想要运行此服务的位置。

在Gradle方面,我以为我会做这样的事情:

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

这确实启动了Play服务,但Gradle任务将无限期挂起(直到你执行控件+ C)。

想到的最明显的事情是:

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

但这最终会走到尽头:

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

这似乎是一个非常常见的用例,所以我想知道是否有一个我忽视的明显解决方案。

1 个答案:

答案 0 :(得分:0)

也许有更多的Gradle-ish方法可以做到这一点,但我通过利用ProcessBuilder解决了这个问题。我的新任务看起来像:

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

显然,你可以通过这种方式获得更多的动力(一个快速的谷歌' java流程构建者'会在页面示例中为你提供网页),但这样做可以达到我的目的。