SpringBoot 由jar包转换为war包

本文详细介绍如何将Spring Boot项目从Jar包转换为War包,以便于进行Tomcat集群部署和优化。步骤包括更改打包方式、排除内置Tomcat、添加Tomcat Servlet API依赖等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章来源:

https://blog.youkuaiyun.com/hao134838/article/details/71436834

我们都知道springBoot中已经内置了tomcat,是不需要我们额外的配置tomcat服务器的,但是有时这也可能是我们的一个瓶颈,因为如果我们需要对tomcat做集群或者一些优化的话是非常不方便的,所以我们仍然需要将springBoot的项目部署到外在的tomcat中,下面小编就介绍一下如何将jar包转换成war包。

第一步、将SpringBoot的项目的打包方式设置为war

    <packaging>jar</packaging>

变更为

    <packaging>war</packaging>

第二步、移除内嵌的tomcat模块,但是为了我们在本机测试方便,我们还需要引入它,所以配置如下

<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-web</artifactId>  
    <exclusions>  
        <exclusion>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-tomcat</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>  
<dependency>  
    <groupId>org.springframework.boot</groupId>  
    <artifactId>spring-boot-starter-tomcat</artifactId>  
    <scope>provided</scope>  
</dependency>  

第三步、添加tomcat-servelt-api依赖

<dependency>  
    <groupId>org.apache.tomcat</groupId>  
    <artifactId>tomcat-servlet-api</artifactId>  
    <version>7.0.42</version>  
    <scope>provided</scope>  
</dependency> 

第四步、修改入口方法 继承一个SpringBootServletInitializer类,并且覆盖configure方法

package com.example;  

import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.boot.builder.SpringApplicationBuilder;  
import org.springframework.boot.web.support.SpringBootServletInitializer;  
import org.springframework.cache.annotation.EnableCaching;  

@SpringBootApplication  
@EnableCaching  
public class SpringDataJpaExampleApplication extends SpringBootServletInitializer {  

    @Override  
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {  
        return application.sources(SpringDataJpaExampleApplication.class);  
    }  

    public static void main(String[] args) {  
        SpringApplication.run(SpringDataJpaExampleApplication.class, args);  
    }  
}

第五步、添加war插件,用来自定义打包以后的war包的名称

<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-war-plugin</artifactId>  
    <configuration>  
        <warSourceExcludes>src/main/resources/**</warSourceExcludes>  
        <warName>springBoot</warName>  
    </configuration>  
</plugin>  

引入上面这个插件,是避免maven打包的时候为我们默认的一个带有版本号的war包名称,因为我们部署到tomcat以后,在访问项目的时候,需要用到这个war包的名称。例如的war包名称为springBoot。本地访问的路径为:

http://localhost:9090/users/

则部署到tomcat以后访问路径为

http://localhost:9090/springBoot/users/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值