Maven常用打包插件的使用

大家好,我是IT修真院深圳分院第01期學員,一枚正直純潔善良的web程序員。今天給大家分享一下,修真院官網JAVA(職業(yè))任務2的知識點——Maven常用打包插件的使用。

1.背景介紹

打包,正式說法是構建項目軟件包,具體說就是將項目中的各種文件,比如源代碼、編譯生成的字節(jié)碼、配置文件、文檔,按照規(guī)范的格式生成歸檔,最常見的是JAR包和WAR包。

2.知識剖析

2.1 關于package

任何一個Maven項目都需要定義POM元素packaging(如果不寫則默認值為jar)。該元素決定了項目的打包方式。實際的情形中,如果你不聲明該元素,Maven會幫你生成一個JAR包;如果你定義該元素的值為war,那你會得到一個WAR包;如果定義其值為POM(比如是一個父模塊),那什么包都不會生成。

2.2 常規(guī)打包

maven項目常規(guī)的四種包:jar、war、source和javadoc,maven提供了對應的插件:maven-jar-plugin、maven-war-plugin、maven-source-plugin和maven-javadoc-plugin。

2.3 可執(zhí)行jar包

Maven默認生成的jar包只包含了編譯生成的.class文件和項目資源文件,而要得到一個可以直接在命令行通過java命令運行的jar文件,還要滿足兩個條件:

1)jar包中的/META-INF/MANIFEST.MF元數據文件必須包含Main-Class信息。

2)項目所有的依賴都必須在Classpath中。

有三種生成方式:

1)使用jar和dependency插件

2)使用shade插件

3)使用assembly插件

2.3 項目分發(fā)包

實際的軟件項目常常會有更復雜的打包需求,例如我們可能需要為客戶提供一份產品的分發(fā)包,這個包不僅僅包含項目的字節(jié)碼文件,還得包含依賴以及相關腳本文件以方便客戶解壓后就能運行,此外分發(fā)包還得包含一些必要的文檔。

assembly插件支持各種打包文件格式,包括zip、tar.gz、tar.bz2等等,通過一個打包描述文件,能夠幫助用戶選擇具體打包哪些文件集合、依賴、模塊、和甚至本地倉庫文件,每個項的具體打包路徑用戶也能自由控制。

assembly.xml文件的id對應了其最終生成文件的classifier。

formats定義打包生成的文件格式。

dependencySets用來定義選擇依賴并定義最終打包到什么目錄。

fileSets允許用戶通過文件或目錄的粒度來控制打包。

3. 常見問題

實際使用

4. 解決方案

在pom文件中配置插件

5. 編碼實戰(zhàn)

6. 擴展思考

assembly插件對包含spring框架的項目打可運行jar包會報錯

鏈接

7. 參考文獻

參考一:maven打包的技巧

參考二:maven官方文檔

8. 更多討論

其他格式的項目分發(fā)包

PPT鏈接


maven常用打包插件_騰訊視頻

提問:用assembly插件打成分發(fā)包,里面的項目可以用IDE打開直接運行嗎?

答:可以

提問:可執(zhí)行jar包中的MANIFEST.MF文件可以手動添加主類信息嗎?

答:我用shade插件試了下,是可以的,但是限制比較多。首先在pom中shade插件配置中注釋掉主類入口配置,然后運行打包,將打出來的jar包用WinRAR打開,直接用sublime編輯MANIFEST.MF文件,添加主類信息然后保存,關閉jar包,運行成功。需要注意的是不能解壓jar包再編輯,否則會報錯,應該是解壓會破壞關聯關系。

提問:打包時怎樣跳過測試?

答:在configuration標簽中加上<skip>true</skip>即可,版本不同可能寫法會有變化,或者用<skipTests>true</skipTests>。

鳴謝

感謝大家觀看

------------------------------------------------------------------------------------------------------------------------

今天的分享就到這里啦,歡迎大家點贊、轉發(fā)、留言、拍磚~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容