Maven管理的SpringBoot项目打成WAR包

本文介绍如何将SpringBoot应用配置为WAR包部署,包括修改pom文件以排除默认的Tomcat依赖,并使用自定义的Tomcat服务器,以及注册启动类的方法。

修改pom文件

<groupId>com.test</groupId>
<artifactId>admin</artifactId>
<version>0.0.1-SNAPSHOT-test</version>
<packaging>war</packaging>

排除SpringBoot 默认Tomcat

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

 注册启动类

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

 执行打包命令:mvn clean package  -Dmaven.test.skip=true

### 解决 Spring Boot WAR 部署至 Tomcat 后访问应用显示 404 错误的方法 #### 修改 `pom.xml` 文件配置 为了使 Spring Boot 应用程序能够作为 WAR 文件运行于外部 Tomcat 容器中,需调整 Maven 的 POM 配置文件。具体来说,在 pom 中应排除默认嵌入式的 Tomcat 并引入 Servlet API 支持: ```xml <dependencies> <!-- 排除内置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> <!-- 添加Servlet API支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- 提供Tomcat依赖用于编译期 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> </dependencies> ``` 上述更改确保应用程序不会尝试启动自己的 Tomcat 实例而是利用宿主容器的服务[^2]。 #### 调整应用程序入口类 为了让 Spring Boot 应用可以被标准的 Java EE Web 容器识别和初始化,需要修改应用程序的主要类使其扩展自 `SpringBootServletInitializer` 类,并覆写其 configure 方法来提供额外的应用上下文配置选项: ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } } ``` 此操作允许 Spring Boot 应用程序在传统 Servlet 容器环境中正常工作[^3]。 #### 设置正确的打方式 最后一步是在项目的构建工具配置文件 (即 pom.xml 或 build.gradle) 中指定最终产物的形式为 war 文件而不是 jar 文件。对于 Maven 用户而言,这可以通过简单地改变 `<packaging>` 元素的内容实现: ```xml <packaging>war</packaging> ``` 完成以上步骤之后重新构建项目生成新的 war 文件并将其部署到目标 Tomcat 服务器上。如果一切顺利的话,应该就可以成功访问所发布的服务了[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值