对于独立场景,您可以只使用Gradle(或 Maven)来创建 fat(意味着具有包括嵌入式 Jetty 服务器在内的所有依赖项)可执行 jar 文件。这是一个简单的build.gradle 文件,它就是这样做的:
apply plugin: 'java'
apply plugin: 'application'
// TODO Change this to your class with your main method
mainClassName = "my.app.Main"
defaultTasks 'run'
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5'
// TODO add more dependencies here...
}
// Create a fat executable jar
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
archiveName "app.jar"
}
通过gradle build 在命令行上构建您的应用程序。这将在您的 build/libs 文件夹中创建一个 app.jar 文件,然后运行:
java -jar build/libs/app.jar
如果你想真正保持最新:) 那么你必须使用Docker 来打包你的 JRE 和应用程序 jar,这样你就不会依赖于安装在服务器上的软件堆栈。为此,我们可以使用Dockerfile:
FROM java:8
ADD build/libs/app.jar /
EXPOSE 4567
ENTRYPOINT ["java", "-jar", "app.jar"]
构建 docker 镜像并运行它,例如:
docker build -t myapp:v1 .
docker run --rm --name myapp -p 4567:4567 myapp:v1
当然,如果您想在远程 Web 服务器上使用 Docker 镜像,您需要将其推送到 Docker Hub 或私有 docker 存储库并使用 docker pull 将其拉到您的服务器,然后再运行它。