1
要知道,Spring Boot 的项目,默认是打为 jar 包的,这时候问题就来了,如果我想打成 war 包部署到 Tomcat,该怎么做呢?又是在网上找了半天的答案,质量不太好,绕来绕去没说个明白。其实还算是非常简单的,只需要大概几个步骤就行了。
2
首先,在项目的 pom.xml 文件中做一些修改:
- 添加
<packaging>war</packaging>
- 排除掉 web 里面自带的 Tomcat,只需要在
spring-boot-starter-web
这个依赖上添加如下内容: - 添加一个自己的 Tomcat ,在配置文件中,加入下面的依赖即可:
- 添加一个插件,在文件的 build -> plugins 下面添加如下内容:
其中需要注意一下,上面的 <warName>ROOT</warName>
表示的是打包之后,war 包的名称,当然你可以改成其他的名字,至于有什么区别,后面再说。
3
找到项目的启动类,让其继承一个类:SpringBootServletInitializer,并且覆盖 configure 方法,在方法中添加 return builder.sources(WarDemoApplication.class);
,当然,这里的 WarDemoApplication.class 是我的启动类名称,你只需要改成你自己的名称即可。
4
这时候,进行最后的打包操作了,执行命令 mvn packgae 即可,这时候,war 包就在项目的 target 文件夹下面,因为我是取名为 ROOT 的,所以 war 就叫做 ROOT.war。然后我们可以将 war 包复制到本地的或是远程的 Tomcat 的webapps 目录下面,需要提前删除 webapps 目录下面的所有文件 ,然后启动 Tomcat ,会自动解压这个 war 包。
最后,该如何访问项目中的接口呢?如果我部署在了远程的 Tomcat 上面,例如 ip 是 192.168.66.128,那直接访问 192.168.66.128:8080/接口名 ,如果你的 war 包不是以 ROOT 命名,例如叫做 demo.war,那么你的访问路径就是 192.168.66.128:8080/demo/接口名,这也是我上面说到的区别。