前后端分离的springboot项目怎么打包成war包并提交到外部tomcat服务器上运行
时间: 2025-07-05 22:03:29 浏览: 15
### 如何将前后端分离的 Spring Boot 项目打包为 WAR 文件并在外部 Tomcat 上运行
#### 配置 `pom.xml`
为了使 Spring Boot 应用程序能够被打包成 WAR 文件,`pom.xml` 中需要做相应修改。具体来说:
- 将 `<packaging>` 设置为 `war` 而不是默认的 `jar`。
- 移除内嵌的 Tomcat 启动器依赖,并引入 Servlet API 提供者。
```xml
<project>
...
<packaging>war</packaging>
<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>
<scope>provided</scope>
</dependency>
<!-- 如果还需要其他组件如MySQL驱动等也在此处声明 -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
```
#### 创建自定义启动类
除了上述更改外,还需创建一个新的 Java 类用于初始化应用程序上下文,该类应继承 `SpringBootServletInitializer` 并覆盖 `configure()` 方法以指定主应用入口点[^2]。
```java
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
```
#### 修改 `application.properties`
当使用外部 Tomcat 进行部署时,`application.properties` 或 `application.yml` 中设置的服务端口 (`server.port`) 及路径前缀 (`server.servlet.context-path`) 不会生效[^1]。因此建议通过操作系统的环境变量或命令行参数传递这些配置项给 Tomcat 实例;也可以直接编辑 `$CATALINA_HOME/conf/server.xml` 来设定监听端口号和服务名。
对于静态资源(前端页面),可以继续利用 Spring MVC 的视图解析机制加载 JSP 页面或其他模板引擎渲染的结果。例如,在 `application.properties` 中保持如下配置即可正常工作[^3]:
```properties
server.servlet.context-path=/myapp # 若希望保留虚拟目录可手动指定此属性值
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
```
注意:如果采用的是完全独立的前端工程,则不需要以上关于视图解析的部分配置,而是应该按照实际需求处理前端构建产物的位置映射关系。
阅读全文
相关推荐


















