springboot打包war
时间: 2025-03-16 11:12:33 浏览: 25
### 如何将 Spring Boot 项目打包为 WAR 文件
为了将 Spring Boot 应用程序打包为 WAR 文件并部署到外部 Tomcat 容器中,需要遵循特定的配置步骤。以下是详细的说明:
#### 配置 Application 类
Spring Boot 的应用程序类必须继承 `SpringBootServletInitializer` 并重写其方法以支持 WAR 包形式的启动[^1]。
```java
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 MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
上述代码通过扩展 `SpringBootServletInitializer` 和覆盖 `configure()` 方法实现了对 Servlet 容器的支持。
---
#### 修改 Maven 构建文件 (pom.xml)
在项目的 `pom.xml` 中设置 `<packaging>` 属性为 `war`,并将嵌入式的 Tomcat 设置为 `provided` 范围,因为外部容器已经提供了这些功能[^3]。
```xml
<project>
...
<packaging>war</packaging>
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Exclude embedded tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- Add support for JSP pages if needed -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
```
此部分定义了构建工具如何处理依赖项以及最终生成的目标文件类型。
---
#### 使用 Maven 进行打包
完成以上更改后,可以通过命令行使用 Maven 来重新打包项目为 WAR 文件:
```bash
mvn clean package
```
这将在目标目录下生成一个 `.war` 文件,可以直接将其复制到外部 Tomcat 的 `webapps/` 目录中进行部署。
---
#### 外部化配置文件
如果希望实现配置文件与应用分离,则可以根据 Spring Boot 提供的多种方式调整环境变量或指定其他位置加载配置文件[^2]。例如,在生产环境中可通过 `-Dspring.config.location` 参数指向自定义路径下的配置文件。
```bash
java -Dspring.config.location=/path/to/config/application.properties -jar myapp.war
```
这种方式允许灵活管理不同环境中的参数而无需修改原始代码库。
---
### 总结
通过继承 `SpringBootServletInitializer`、调整 POM 文件结构以及利用 Maven 插件的功能,能够轻松地将 Spring Boot 工程转换为适合传统 Java EE 容器使用的 WAR 格式档案[^4]。
阅读全文
相关推荐


















