平常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包