SpringBoot 如何 打war包
SpringBoot 如何 打war包
第一步: 修改pom.xml
<!-- 打包方式(默认为jar) -->
<packaging>war</packaging>
第二步: 排除springboot自带的tomcat
<!-- 配置Web启动器(集成SpringMVC、内嵌tomcat、Jackson) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--
配置tomcat启动器,就会排除spring-boot-starter-web中依赖过来的tomcat启动器
指定scope为provided: 代表打war包时,不需要它的依赖jar包(我们有自己的tomcat)
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--作用范围:provided: 打包的时候不生效-->
<scope>provided</scope>
</dependency>
注意: spring-boot-starter-tomcat 是原来被传递过来的依赖,默认会打到包里,所以我们需要配置tomcat启动器,这样就会排除spring-boot-starter-web中依赖过来的tomcat启动器,并指定依赖范围为provided,这样tomcat相关的jar就不会打包到war里了。
目的: 我们用自己tomcat,不用它内嵌的tomcat,这样内嵌的tomcat相关jar包就不需要。
第三步: 自定义Web应用入口类继承SpringBootServletInitializer(相当于web.xml)
package com.configuration;
import cn.itcast.HighApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;
/**
* web应用入口类,代替web.xml
*/
@Configuration
public class WebServletInitializer extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
//设置启动类
builder.sources(HighApplication.class);
return builder;
}
}
第四步: 在pom.xml修改工程的名称为 ROOT
<build>
<!-- 指定最终打成war的项目名称 -->
<finalName>ROOT</finalName>
</build>
或者如下
<build>
<!--修改打包名称-->
<finalName>ROOT</finalName>
<plugins>
<!-- 配置spring-boot的maven插件
1. 用它可以运行spring-boot项目
2. 需要用它构建打jar、war资料
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>