SpringBoot 中的 jar 與 war
點(diǎn)擊上方 Java學(xué)習(xí)之道,選擇 設(shè)為星標(biāo)
作者: 神牛003
來源: cnblogs.com/wangrudong003/p/10024455.html
本篇和大家分享的是通過maven對(duì)springboot中打war包和jar包;war通常來說生成后直接放到tomcat的webapps下面就行,tomcat配置自動(dòng)解壓war,而jar一般通過命令行部署和啟動(dòng);
首先,來實(shí)戰(zhàn)怎么生成war包,主要來說可以分為3個(gè)步驟:
-
程序入口改造 -
排除springboot內(nèi)置tomcat -
spring-boot-maven-plugin插件中配置程序入口 程序入口改造,我們需要把springboot的main入口屏蔽掉,然后繼承SpringBootServletInitializer,并重寫configure方法,具體代碼如:
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}
// public static void main(String[] args){
//
// }
}
排除springboot內(nèi)置tomcat,默認(rèn)的情況下springboot是集成有內(nèi)置tomcat,因?yàn)閣ar需要發(fā)在我們服務(wù)器上的tomcat中,內(nèi)置的tomcat不需要,可以如下在maven中配置屏蔽:
<!--war包-排除內(nèi)置tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
這里通過scope作用域?yàn)閜rovided來排除tomcat包,springboot框架中有包含tomcat包,scope默認(rèn)的作用于是compile,編譯,測試,運(yùn)行;
spring-boot-maven-plugin插件中配置程序入口,上面我們屏蔽了main入口,但是tomcat還是通過啟動(dòng)類作為入口,因此需要配置下啟動(dòng)mainClass:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--war包-執(zhí)行程序入口 -->
<configuration>
<mainClass>com.platform.WebApplication</mainClass>
</configuration>
</plugin>
最后,把入口項(xiàng)目的packaging指定成war類型
<packaging>war</packaging>
如上我們準(zhǔn)備工作就完成了,下面我們僅僅maven的package打包就行了,生成后如下截圖:

war包里面的內(nèi)容就是META-INF和WEB-INF部分,我們吧war上傳到linux上的tomcat的webapps下面,一般配置tomcat都會(huì)自動(dòng)解壓war包,我這里之前寫了一個(gè)api接口,運(yùn)行成功后正常在瀏覽器顯示:

再來,我們開始打jar包,步驟同樣和war差不多,不過是反向的去掉注釋的內(nèi)容:
-
還原main入口(springboot模板生成的main,不做任何修改) -
去掉排除tomcat的配置(默認(rèn)就不沒有這個(gè)配置) -
使用maven-jar-plugin插件打包,指定程序入口和各種包含|排除項(xiàng) 還原不注釋main入口,主要針對(duì)剛才打war注釋了main入口操作,一般采用springboot模板默認(rèn)生成就行:
public static void main(String[] args) throws ParseException, Exception {
SpringApplication springApplication = new SpringApplication(WebApplication.class);
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
}
去掉排除tomcat的配置(默認(rèn)就不沒有這個(gè)配置),同樣這一步也是針對(duì)打war添加了排除tomcat的配置,直接刪除就行,刪除:
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
使用maven-jar-plugin插件打包,指定程序入口和各種包含|排除項(xiàng),這里通過jar插件配置一些項(xiàng),對(duì)配置文件和main入口指定:
<!--打jar包-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<!--<addClasspath>true</addClasspath>-->
<!--<classpathPrefix>lib/</classpathPrefix>-->
<!--main入口-->
<mainClass>com.platform.WebApplication</mainClass>
</manifest>
</archive>
<!--包含的配置文件-->
<!--<includes>-->
<!--<include>*.yml</include>-->
<!--<include>*.properties</include>-->
<!--<include>templates/**</include>-->
<!--<include>static/**</include>-->
<!--<include>*.xml</include>-->
<!--</includes>-->
</configuration>
</plugin>
最后,把入口項(xiàng)目的packaging指定成war類型:
<packaging>jar</packaging>
完成以上步驟后,能夠看到成功的jar包,如圖:

最后在linux上通過java -jar web-0.0.01.SN...jar 啟動(dòng)即可。
-
| 更多精彩文章 -
![]()
▽加我微信,交個(gè)朋友 長按/掃碼添加↑↑↑


