我们在创建SpringBoot项目时可以选择打包方式为Jar或War,两者区别是Jar包可以由内置Tomcat运行,而War包则和普通Maven项目一样通过外部Tomcat运行。因此有时候我们需要改变打包方式。
- 将
pom.xml
文件中的打包方式改为war
| ... |
| <packaging>war</packaging> |
| ... |
- 移除内置
Tomcat
依赖,并引入外部Tomcat
依赖
| <dependency> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-tomcat</artifactId> |
| <scope>provided</scope> |
| </dependency> |
| |
| <dependency> |
| <groupId>javax.servlet</groupId> |
| <artifactId>javax.servlet-api</artifactId> |
| <version>3.0.1</version> |
| <scope>provided</scope> |
| </dependency> |
| |
| <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> |
- 在
SpringBoot
启动类继承SpringBootServletInitializer
,并重写configure
方法
| public class PushPhmApplication extends SpringBootServletInitializer { |
| |
| @Override |
| protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { |
| |
| return application.sources(PushPhmApplication.class); |
| } |
| |
| public static void main(String[] args) { |
| SpringApplication.run(PushPhmApplication.class, args); |
| } |
| |
| } |
- 打包项目放入
Tomcat
即可运行,此时配置文件中的 server.port
将失效,改用Tomcat
中配置的端口即可访问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步