一、引言

使用SpringBoot构件的项目一般有两种发布方式:

  1. jar包(可以直接通过java -jar 的命令进行启动)
  2. war包(一般放到Tomcat、Jboss等web容器里面)

下面我针对这两种发布方式进行讲解。

二、环境准备

  • jdk8
  • idea 2018.03
  • maven3
  • tomcat9
  • spring boot项目(maven构建)
  • 适用前后端分离的项目(后台只提供服务接口)

项目结构如下:

javawar 包部署 war包和jar包部署_javawar 包部署

三、Jar方式发布

  1. 修改maven中的package方式为jar
  2. javawar 包部署 war包和jar包部署_javawar 包部署_02

  3. 添加spring boot maven插件,指定mainClass
  4. javawar 包部署 war包和jar包部署_spring boot_03

  5. 说明:
    如果此处不指定mainClass的话,很有可能就是项目可以打包成功,并且可以java -jar ***.jar成功启动,但是访问不了任何服务。
  6. 进到此项目路径下(即pom.xml所在文件目录)
    执行mvn clean package
  7. javawar 包部署 war包和jar包部署_spring boot_04

  8. 稍等片刻,即可提示打包成功!!!
  9. 进入到jar所在目录位置,使用java -jar ***.jar启动
    启动成功界面:如下
  10. javawar 包部署 war包和jar包部署_jar部署_05

  11. 看到如下:即启动成功
  12. javawar 包部署 war包和jar包部署_war部署_06

  13. 测试服务(测试成功)
  14. javawar 包部署 war包和jar包部署_javawar 包部署_07

四、War方式发布

  1. 修改pom中打包方式为war
  2. javawar 包部署 war包和jar包部署_war部署_08

  3. 改造入口类:我的项目是FrameworkApplication
    继承SpringBootServletInitializer类,重写configure()方法,内容如下
  4. 进到此项目路径下(即pom.xml所在文件目录)
    执行mvn clean package
  5. javawar 包部署 war包和jar包部署_war部署_09

  6. 稍等片刻,即可打包成功
  7. 将打包好的war放入到tomcat9中,启动测试
  8. javawar 包部署 war包和jar包部署_spring boot_10

  9. 复制到webapp下面,并改名为fr.war
  10. javawar 包部署 war包和jar包部署_spring boot_11

  11. 启动Tomcat,发现启动正常
  12. javawar 包部署 war包和jar包部署_jar部署_12

  13. 测试接口url
  14. javawar 包部署 war包和jar包部署_jar部署_13

五、可能出现的异常问题及解决

  1. 打jar包时,如果打包成功,而且可以使用java -jar 命令启动成功,但是无法访问。考虑是没有执行mainClass的原因
  2. 打war包时,如果按照我上面说的方式打包成功,并且成功启动项目,但是也出现服务访问不了,一直报404。考虑如下原因:

六、其他

  1. 如何关闭项目服务
  1. window下:关闭命令行窗口就是关闭了项目。jar和war包一样。
  2. liunx下:ps命令找到进程, kill -9 xxx即可
  1. 其他注意事项
  1. 记得配置maven的java的编译版本,不然会报一些莫名其妙的错误

    我这里配的是1.8版本