1 说明
SpringBoot内置tomcat使用起来很方便,打成jar包以后就可以直接运行,然而这样的运行方式还是有它的局限性的,没有外部独立的tomcat管理起来方便,而且如果有多个web应用,使用外部tomcat的优势也很明显。所以在这里我就给大家介绍一下在IDEA中如何将一个springboot应用打成war包部署到外部tomcat中。
2 步骤
2.1 修改打包的形式
将原来的jar包形式改为war包形式,也就是将pom.xml文件里的<packaging>jar</packaging>改成<packaging>war</packaging>。
2.2 修改导出war包的名称
在pom.xml文件的<build>节点下可以添加一个节点<finalName>用来指定最后导出war包的名称。
2.3 移除内置的tomcat插件
有两种方式:
一种是在pom.xml文件里找到spring-boot-starter-web依赖节点,在其中添加如下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
另一种方法是在pom.xml里面直接添加如下依赖项:
<!--部署成war包时开启↓↓↓↓--><
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--部署成war包时开启↑↑↑↑-->
2.4 修改启动类
例如我们以前的启动类是App,修改之前App如下:
修改之后App如下:
其中的变化就是继承了类SpringBootServletInitializer,然后添加了方法:
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(App.class);
}
2.5 使用IDEA导出war包
在IDEA中点击【Build】——【Build Artifacts】,然后选择要打包的springboot工程,点击【Build】或者【ReBuild】,然后在工程的target目录下面会生成war包。
2.6 在tomcat中使用war包访问
将打好的war包放在tomcat的webapps目录下面,启动tomcat,war包会自动解压出一个和war包同名的文件夹,这个时候可以通过路径【http://ip:port/war包的名称】来访问springboot系统,如果需要修改配置的话可以在解压的文件夹中找到springboot的yml配置文件,修改其中的配置项,然后重启tomcat生效。
3 注意事项
3.1 tomcat版本
记得外部tomcat要使用8.5及以上的版本,不然支持不了springboot。