springboot多模块项目打jar包改成打war包
时间: 2024-09-13 21:19:23 浏览: 57
springboot web项目打jar或者war包并运行的实现
在Spring Boot中,如果你需要将一个Spring Boot多模块项目打包成WAR包(通常用于部署到传统的Web应用服务器上,如Tomcat),你需要进行一些配置上的调整。以下是将多模块项目打包成WAR包的基本步骤:
1. 修改父模块的`pom.xml`文件,将`spring-boot-starter-parent`的打包方式从`jar`改为`war`。同时确保移除`spring-boot-maven-plugin`插件,因为它是用于生成可执行的JAR包的。
```xml
<packaging>war</packaging>
```
2. 对于每一个需要打包成WAR的子模块,也需要在各自的`pom.xml`中将打包方式改为`war`。
```xml
<packaging>war</packaging>
```
3. 如果主应用模块(通常是包含`main`方法的模块)继承自`spring-boot-starter-web`,则需要移除`spring-boot-starter-tomcat`依赖,因为WAR包会包含自己的Servlet容器。同时,添加一个依赖来代替Tomcat,比如`tomcat-embed-jasper`。
```xml
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
```
注意`scope`应该是`provided`,因为Web服务器(如Tomcat)会提供它。
4. 对于使用了嵌入式Servlet容器的`@SpringBootApplication`主类,需要修改其继承的类。通常需要将继承自`SpringBootServletInitializer`的子类覆盖`configure`方法。这样做是为了配置Spring Boot应用以部署为WAR包。
```java
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyApplication.class);
}
}
```
5. 构建项目时使用Maven的`package`命令,这会生成WAR包而不是JAR包。
```shell
mvn clean package
```
请确保在部署WAR包之前,你的应用服务器已经正确配置并且能够支持WAR包的部署。
阅读全文