可执行的罐子

部署 Grails 3.x 的最简单方法之一是构建一个可执行 jar 文件,该文件将 servlet 容器(Tomcat,Undertow 等)嵌入到应用程序中。

修改 build.gradle

// Remove or comment out the war plugin:
// apply plugin:"war"

// Enable the executable jar:
springBoot {
    executable = true
}

// Optional: Customize the jar properties:
//  https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html
jar {
    archiveName('myapp.jar')
}

使用 ./gradlew assemble 构建

结果 jar 现在是一个可以启动的完全可执行的应用程序:

$ head build/libs/myapp.jar
#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ `_(_)`_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#

你可以像通常的任何命令行应用程序一样启动它:

$ ./build/libs/myapp.jar
Grails application running at http://localhost:8080 in environment: production

它的行为类似于 init 服务:

$ ln -s /opt/myapp/myapp.jar /etc/init.d/myapp
$ service myapp [start|stop|status|restart]

详细文档在 spring-boot 文档下: http//docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html