【猿经验分享】如何使用IDEA将springboot打成war包在外部tomcat中运行

分类:计算机 | Spring | SpringBoot | 综合 1301
更新:2021-06-08 00:18:52
编辑

1 说明

SpringBoot内置tomcat使用起来很方便,打成jar包以后就可以直接运行,然而这样的运行方式还是有它的局限性的,没有外部独立的tomcat管理起来方便,而且如果有多个web应用,使用外部tomcat的优势也很明显。所以在这里我就给大家介绍一下在IDEA中如何将一个springboot应用打成war包部署到外部tomcat中。

2 步骤

2.1 修改打包的形式

将原来的jar包形式改为war包形式,也就是将pom.xml文件里的jar改成war

2.2 修改导出war包的名称

在pom.xml文件的节点下可以添加一个节点用来指定最后导出war包的名称。

<!--打包的名称(jar或者war)-->
<finalName>WarName</finalName>

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。