maven的幾種常用打包工具 VS SpringBoot的打包工具

我們先明確下Packaging的含義(部分內(nèi)容轉(zhuǎn)載自:Maven實(shí)戰(zhàn)(九)——打包的技巧)

任何一個(gè)Maven項(xiàng)目都需要定義POM元素packaging(如果不寫則默認(rèn)值為jar)。顧名思義,該元素決定了項(xiàng)目的打包方式勉吻。實(shí)際的情形中坚芜,如果你不聲明該元素屉佳,Maven會(huì)幫你生成一個(gè)JAR包谷朝;如果你定義該元素的值為war,那你會(huì)得到一個(gè)WAR包武花;如果定義其值為POM(比如是一個(gè)父模塊)圆凰,那什么包都不會(huì)生成。

下面我們來(lái)看看maven自帶的幾種打包工具:

maven-jar-plugin
(我們可以通過(guò)mvn help:describe命令來(lái)查看插件体箕、命令等操作的詳細(xì)說(shuō)明专钉,比如我們?cè)诿钚袌?zhí)行mvn help:describe -Dplugin=org.apache.maven.plugins:maven-jar-plugin,便可以看到maven-jar-plugin插件的詳細(xì)介紹)
jar項(xiàng)目默認(rèn)的打包工具,默認(rèn)情況下只會(huì)將項(xiàng)目源碼編譯生成的class文件和資源文件打包進(jìn)來(lái)累铅,不會(huì)打包進(jìn)項(xiàng)目依賴的jar包跃须。

maven-war-plugin
war項(xiàng)目默認(rèn)的打包工具,默認(rèn)情況下會(huì)打包項(xiàng)目編譯生成的.class文件娃兽、資源文件以及項(xiàng)目依賴的所有jar包菇民。

maven-assembly-plugin
需要在pom文件的plugin元素中引入才可以使用,功能非常強(qiáng)大投储,是maven中針對(duì)打包任務(wù)而提供的標(biāo)準(zhǔn)插件第练。它是Maven最強(qiáng)大的打包插件,它支持各種打包文件格式玛荞,包括zip娇掏、tar.gz、tar.bz2等等勋眯,通過(guò)一個(gè)打包描述文件設(shè)置(src/main/assembly.xml)婴梧,它能夠幫助用戶選擇具體打包哪些資源文件集合、依賴客蹋、模塊志秃,甚至本地倉(cāng)庫(kù)文件,每個(gè)項(xiàng)的具體打包路徑用戶也能自由控制嚼酝。

maven-shade-plugin
需要在pom文件的plugin元素中引入才可以使用,它可以讓用戶配置Main-Class的值竟坛,然后在打包的時(shí)候?qū)⒅堤钊?META-INF/MANIFEST.MF文件闽巩。關(guān)于項(xiàng)目的依賴,它很聰明地將依賴的JAR文件全部解壓后担汤,再將得到的.class文件連同當(dāng)前項(xiàng)目的.class文件一起合并到最終的CLI包(可以直接運(yùn)行的jar包)中涎跨,這樣,在執(zhí)行CLI JAR文件的時(shí)候崭歧,所有需要的類就都在Classpath中了隅很。

如何選用這幾個(gè)插件

  • 如果在開(kāi)發(fā)一個(gè)庫(kù),直接使用默認(rèn)的maven-jar-plugin插件即可率碾;
  • 如果是開(kāi)發(fā)一個(gè)應(yīng)用程序叔营,可以考慮使用maven-shade-plugin進(jìn)行打包生成über jar(über jar是將應(yīng)用程序打包到單獨(dú)的jar包中屋彪,該jar包包含了應(yīng)用程序依賴的所有庫(kù)和二進(jìn)制包)
  • 如果打包生成了über jar都不能滿足你的需求的話,那么推薦使用maven-assembly-plugin插件來(lái)自定義打包內(nèi)容绒尊。

我們?cè)賮?lái)看看SpringBoot的spring-boot-maven-plugin插件的打包功能

spring-boot-maven-plugin
spring-boot-maven-plugin插件在Maven中提供了對(duì)Spring Boot的支持畜挥,可以幫助我們打包出可執(zhí)行的jar包或者war包。其實(shí)spring-boot-maven-plugin所做的工作是在默認(rèn)的maven-jar-plugin插件打包結(jié)束后婴谱,將項(xiàng)目依賴的jar包中的.class文件重新進(jìn)行打包蟹但。

[INFO] 
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ helloworld ---
[INFO] Building jar: /Users/gaozengrong/IdeaProjects/helloworld/target/helloworld-1.0-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ helloworld ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.357 s
[INFO] Finished at: 2017-03-19T17:51:33+08:00
[INFO] Final Memory: 33M/289M
[INFO] ------------------------------------------------------------------------

可以看出,在調(diào)用maven-jar-plugin的goal:jar任務(wù)打包之后谭羔,又調(diào)用了spring-boot-maven-plugin的goal:repackage任務(wù)华糖,這樣會(huì)產(chǎn)生兩個(gè)jar包。在helloworld這個(gè)工程里分別對(duì)應(yīng)helloworld-1.0-SNAPSHOT.jar.original(maven-jar-plugin打包生成的jar包)瘟裸,helloworld-1.0-SNAPSHOT.jar(spring-boot-maven-plugin重新打包生成的可執(zhí)行jar包)客叉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市景描,隨后出現(xiàn)的幾起案子十办,更是在濱河造成了極大的恐慌,老刑警劉巖超棺,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件向族,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡棠绘,警方通過(guò)查閱死者的電腦和手機(jī)件相,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)氧苍,“玉大人夜矗,你說(shuō)我怎么就攤上這事∪门埃” “怎么了紊撕?”我有些...
    開(kāi)封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赡突。 經(jīng)常有香客問(wèn)我对扶,道長(zhǎng),這世上最難降的妖魔是什么惭缰? 我笑而不...
    開(kāi)封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任浪南,我火速辦了婚禮,結(jié)果婚禮上漱受,老公的妹妹穿的比我還像新娘络凿。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布絮记。 她就那樣靜靜地躺著摔踱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪到千。 梳的紋絲不亂的頭發(fā)上昌渤,一...
    開(kāi)封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音憔四,去河邊找鬼膀息。 笑死,一個(gè)胖子當(dāng)著我的面吹牛了赵,可吹牛的內(nèi)容都是我干的潜支。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼柿汛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冗酿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起络断,我...
    開(kāi)封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裁替,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后貌笨,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弱判,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年锥惋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昌腰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膀跌,死狀恐怖遭商,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捅伤,我是刑警寧澤劫流,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站丛忆,受9級(jí)特大地震影響祠汇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蘸际,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徒扶。 院中可真熱鬧粮彤,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惫周,卻和暖如春尘惧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背递递。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工喷橙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人登舞。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓贰逾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親菠秒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疙剑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容