2016-04-21 3 views
0

Я пытаюсь использовать задачу Gradle для запуска службы Play, но я нахожу, что задача Gradle будет зависать (предположительно ожидая возвращаемого значения из сценария начальной загрузки Play).Служба Running Play от Gradle

Что я делаю со стороны Play просто:

sbt dist 

Который производит распределение .zip (например, «myproject.zip»), которую я затем расширить, где я хочу, чтобы запустить эту услугу от ,

На стороне Gradle, я думал, я хотел бы сделать что-то вроде этого:

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

Это действительно запустить службу Play просто отлично, но задача Gradle будет висеть на неопределенное время (пока вы не сделаете контроль + С).

Самое очевидное, что пришло в голову попробовать что-то вроде:

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() 
} 

Очевидно, что вы можете получить много любителя с этим (быстрым Google в «Java ProcessBuilder» будет сеть вам страниц, на страницах примеров), но это будет делать трюк для моих цели.

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