SpringBoot 通过 Exploded Archives 的方式部署

之前部署 SpringBoot 一直是用可执行 jar 的方式。

java -jar codergroup-1.0.0.jar 就可以启动项目,为了能在后台运行,通常我们会使用这行命令

nohup java -jar codergroup-1.0.0.jar >temp.txt &

这种方式部署最大的好处,我觉得还是操作简单,无需安装外置的 Tomcat,所以完全可以摆脱使用传统的 war 的方式部署。

但是,jar 方式部署的话,我们就不能使用像 war 那种,放在 tomcat 下的 webapps 里就能解压,然后可以直接修改里面的 classes(包括静态文件,配置文件,java字节码文件)。

当我将项目部署到服务器上,突然发现有一个bug,或者有一个错误的链接需要修改。我们可以在本地修改,然后重新使用 maven 打包,再上传新的 jar 包,再将服务器上原来的服务杀死,重新执行 java -jar 命令。显示,这太麻烦了,一方面比较费时间,另一方面网站会有十几秒钟停止访问。

于是,我开始想用 war 的方式部署,但是一直出现  2 Spring WebApplicationInitializers detected on classpath 报错,解决了很久未果。于是,暂时放弃。

后来去查看官方文档,找到更好的方法。

SpringBoot 通过 Exploded Archives 的方式部署

我们可以解压 jar,然后运行里面的启动类

unzip -q codergroup-1.0.0.jar

java org.springframework.boot.loader.JarLauncher

运行结果如下

SpringBoot 通过 Exploded Archives 的方式部署

这种情况下,不能属于前台启动,我们建议使用后台启动

nohup java org.springframework.boot.loader.JarLauncher >output.txt &

这时候,控制台信息将写入到 output.txt 文件

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
言曌

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: