Loading... ### Spring Boot项目打包成WAR包 Spring Boot默认生成独立的JAR文件,但有时我们需要将Spring Boot应用部署到传统的Servlet容器(如Tomcat、Jetty)中,这时就需要将Spring Boot应用打包成WAR文件。本文将详细介绍如何将Spring Boot项目打包成WAR包。 ![](https://www.8kiz.cn/usr/uploads/2024/07/2367948694.png) ### 一、修改POM文件 首先,确保你的项目是基于Maven构建的,并且需要对 `pom.xml`文件进行以下几处修改: #### 1.1 更改打包方式 将默认的打包方式从JAR改为WAR。 ```xml <packaging>war</packaging> ``` #### 1.2 添加Tomcat依赖 在 `dependencies`节点中添加Tomcat依赖,并将其作用域设置为 `provided`,这样Tomcat不会被打包到WAR文件中。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> ``` #### 1.3 排除嵌入式Tomcat 如果你的项目中包含嵌入式Tomcat依赖,需要将其排除。 ```xml <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> ``` 完整的 `pom.xml`示例如下: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>11</java.version> </properties> <dependencies> <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> <!-- 其他依赖 --> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> ``` ### 二、修改启动类 为了支持WAR包部署,需要修改Spring Boot应用的启动类,使其继承 `SpringBootServletInitializer`并重写 `configure`方法。 ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` ### 三、构建WAR包 在项目根目录下执行以下命令,使用Maven构建WAR包: ```sh mvn clean package ``` 构建成功后,可以在 `target`目录下找到生成的WAR文件,例如 `demo-0.0.1-SNAPSHOT.war`。 ### 四、部署WAR包 将生成的WAR包复制到Tomcat的 `webapps`目录下,启动Tomcat,应用将自动部署并运行。访问 `http://localhost:8080/demo`即可访问应用。 ### 五、总结 通过上述步骤,我们成功地将一个Spring Boot应用打包成WAR文件,并部署到外部的Tomcat服务器中。这种方式适用于需要与传统Servlet容器集成的场景。 ### 思维导图示例 ```mermaid graph TD A[Spring Boot项目打包成WAR包] --> B[修改POM文件] B --> C[更改打包方式] B --> D[添加Tomcat依赖] B --> E[排除嵌入式Tomcat] A --> F[修改启动类] F --> G[继承SpringBootServletInitializer] A --> H[构建WAR包] H --> I[mvn clean package] A --> J[部署WAR包] J --> K[复制WAR包到webapps目录] J --> L[启动Tomcat] ``` 通过以上详细的步骤和思维导图,您可以系统地理解如何将Spring Boot项目打包成WAR包并部署到传统的Servlet容器中。希望这些内容对您的学习和工作有所帮助。 最后修改:2024 年 08 月 03 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏