我有一个基于Gradle的Java应用程序。该应用程序实际上是一个守护程序。在我的本地机器上,我可以通过运行以下命令启动守护进程:

> gradle run

那很好,但是我需要的是一种在主机重新启动时启动守护程序的方法。我正在尝试使其在EC2实例上工作。

最佳答案

我正在做一个插件来做到这一点。主要组件是生成init.d脚本,另一个组件是将它们打包到DEB或RPM中。我还没有将它与应用程序插件本身绑定(bind)在一起,但是很接近,它被称为nebula-ospackage-daemon插件:https://github.com/nebula-plugins/nebula-ospackage-plugin#nebula-ospackage-daemon。您将执行以下操作:

 buildscript {
    repositories { jcenter() }

    dependencies {
        classpath 'com.netflix.nebula:nebula-ospackage-plugin:1.12.+'
    }
}

apply plugin: 'application'
mainClassName = "sample.Main"

apply plugin: 'os-package'
apply plugin: 'nebula-ospackage-daemon'

daemon {
    command = "/opt/myapp/bin/ospackage-application"
}

ospackage {
    into('/opt/myapp')
    with(applicationDistribution)
}

07-26 01:46