Spring Boot项目打包成WAR包的步骤
来源:xjh 编辑:xjh 2025-06-26
要把Spring Boot项目打包成WAR包,得对项目配置进行一些调整。下面详细介绍操作步骤:
1. 修改打包方式
在`pom.xml`文件里,把打包方式从默认的`jar`改成`war`:
```xml
<packaging>war</packaging>
```
2. 排除嵌入式Servlet容器依赖
为避免嵌入式Servlet容器和外部Servlet容器产生冲突,需要排除嵌入式Tomcat依赖。在`pom.xml`中添加如下配置:
```xml
<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>
```
3. 添加Servlet API依赖
添加Servlet API依赖,并且将其作用域设为`provided`,这样在运行时就会使用外部Servlet容器提供的实现。
```xml
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
```
4. 修改主应用类
让主应用类继承`SpringBootServletInitializer`类,并重写`configure`方法,以便在Servlet容器中启动Spring应用上下文。示例如下:
```java
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class LabServerApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(LabServerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(LabServerApplication.class, args);
}
}
```
5. 打包项目
方法1)使用Maven命令进行打包:
```bash
mvn clean package
```
执行完这个命令后,在项目的`target`目录下就会生成一个WAR文件,文件名格式通常为`项目名-版本号.war`。
方法2)使用Maven 工具按钮打包:
Maven 工具按钮-> 项目名-> 生命周期->点 clean->点 package->出现如下提示信息,表示打包成功。
......................
[INFO] Packaging webapp
[INFO] Assembling webapp [lab-server] in [E:lab-booking-server-warlab-server argetlab-server-1.0.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Building war: E:lab-booking-server-warlab-server argetlab-server-1.0.0-SNAPSHOT.war
[INFO] BUILD SUCCESS
6. 部署到Servlet容器
把生成的WAR文件复制到外部Servlet容器(如Tomcat)的`webapps`目录下,然后启动Servlet容器,容器会自动解压并部署这个WAR文件。
通过以上步骤,你的Spring Boot项目就能成功打包成WAR包并部署到外部Servlet容器中了。