平常springboot项目默认打包成jar包,但是由于有时候我们需要将项目放在同一个tomcat下面运行,那么我们就需要将SpringBoot打包成war包。
具体操作:
1.修改pom.xml文件
<groupId>sf-carbon-emission</groupId>
<artifactId>sf-carbon-emission</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--<packaging>jar</packaging>-->
<packaging>war</packaging>
2、去掉org.springframework.boot依赖中的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>
3. 新建一个SpringBootStartApplication 继承自 SpringBootServletInitializer
【注意】:这个新建的类,与springboot的启动类是同级的
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* Description:
* 打war包
* 2018-07-03 15:03
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(com.sf.carbon.emission.MainApplication.class);
}
}
注意:SpringBootServletInitializer接口需要依赖 javax.servlet
在pom.xml中添加依赖:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
4.然后,请不要用Intellij idea来打包项目为Jar,项目的根目录,然后用 mvn clean package 这个命令来打包,如图所示:
打包成功在target目录下即可看到war包