IDEA+gradle將springBoot專案打可執行的Jar包

大蘑菇哥發表於2018-10-24

IDEA+gradle將springBoot專案打可執行的Jar包

IDEA也是最近才使用,之前一直用Eclipse
gradle也是最近在使用,之前一直用maven
剛使用新的工具總和初學者一樣會遇到一些問題,就像是打包這個小事,之前用eclipse+maven特別簡單,換了新的IDEA+Gradle各種不適應,打不出可以執行的jar包。去網上找了很我文章不是版本對不上就是說的不透徹;
本文用的是IntelliJ IDEA 2018.2.5 x64。廢話有點多,接下來開始幹活。

首先你要有SpringBoot或是SpringCloud專案

又是廢話,看這篇文章的人基本上都是有專案打不出包的,那就不說建立專案的過程了。
我用的是一個SpringCloud的demo專案。

拿其中一個專案打包做例子hpt-sso,hpt-sso引用了hpt-base,打包時我會把hpt-base.jar也打進去。
步驟:

  1. 使用快捷鍵盤ctrl+shift+alt+s ,開啟打包的介面。

  2. 點選Artifacts,再點選加號(+);點選JAR,選擇From modules with dependencies…
    在這裡插入圖片描述在這裡插入圖片描述

  3. 選擇Module,就是你要打包成jar的專案,選擇MainClass,就是你JAR中要執行的Main方法,JAR files from libraries我選擇第2項copy to the output directory and link via manifest,因為我新增依賴包的目錄,依賴包在jar包的外面(lib目錄與hpt-sso.jar同級);選擇META-INF/MANIFEST.ME的目錄,該目錄下不能有META-INF/MANIFEST.ME,如果有就刪除掉,不然已存在會建立失敗;最後點選OK
    在這裡插入圖片描述

  4. 點開“Available Elements”中你要打包的專案,右擊中你的專案名_main,點選Put into Output Root在這裡插入圖片描述在這裡插入圖片描述
    這時我們看到
    “hpt-base_main”,這是引用專案的(沒有引用專案的沒這個),因為我等下要引用htp-base.jar這裡我可以先把它刪除掉,不然等下可能把引用專案的class檔案也打包進來了,這樣hpt-base.jar和hpt-base下的所有class並存沒必要。
    “hpt-sso_main”,這是hpt-sso專案的所有class檔案,這肯定要保留
    除此之外還有很多我們要打包專案所依賴的第三方JAR包。

  5. 接下來我們在output root下建立一個lib資料夾,然後把所有jar包放到lib下,移動lib的時候可以用shift多選lib,然後用右鍵拖到lib目錄下(注:左鍵只能拖一個),不要把我們的主jar包也放進去,hpt-sso.jar要跟lib同級;
    在這裡插入圖片描述

  6. 引用專案的包:如果有引用專案,可以新增引用專案的包,比如hpt-base.jar這個包是我之前像這篇文章一樣建立好的,我們可以在右邊的Artifacts中選擇,雙擊就到左邊來了,一樣別忘了拖到lib目錄下。(沒有引用專案這步就可以省略了)在這裡插入圖片描述

  7. 新增配置檔案,右擊你要最終打包的jar名(hpt-sso.jar) -> +Add Copy of -> Directory Content,開啟新視窗在這裡插入圖片描述
    選擇專案中的配置檔案目錄(resources),點選OK
    在這裡插入圖片描述
    最終我們得到一個如下結構的目錄
    在這裡插入圖片描述

  8. 編輯Class Path,將lib下的引用包放到Edit Classpath中,別忘記在包前加上lib/。如果引用jar包較多可以shift選中lib下的所有包複製到記事本或其它編輯器中編輯完再貼上到Edit Classpath框中。我使用的是Excel編輯的。最後點選OK就完成了所有jar包打包的準備工作。
    在這裡插入圖片描述

  9. 打包 使用Build–>Build Artifacts,選擇你要build的jar點選build,打包完成去輸出目錄下檢視結果輸出目錄在
    在這裡插入圖片描述
    檢視目錄結構,lib下有我們所有的引用jar包;
    在這裡插入圖片描述
    用解壓工具開啟htp-sso.jar檢視目錄結構:正常,配置檔案application.yml也存在;

在這裡插入圖片描述

檢視META-IN\MANIFEST.MF內容,都正常,這樣打包就成功了。在這裡插入圖片描述
12. 執行 用cmd命令,進入jar包所在目錄,執行命令:java -jar xxx.jar,專案執行成功。在這裡插入圖片描述
最後:IDEA+GRADLE打個可執行的jar包挺麻煩的。
再最後:整體結束,形成一篇文章好累啊。
再再最後:一遍操作成功,後面再操作就簡單了,這個打包自由配置度很靈活,能打出自己想要的jar包中的內容,付出的代價就是複雜點,要自己配置。
最後一個最後:如果idea能有個預設的傻瓜一鍵打jar包就好了,再有這個靈活配置,二者並存,完美。


此文寫了有半年了,是初學時的打包痛點。
傻瓜一鍵打jar就是bootJar這個外掛。很簡單。祝大家學習愉快。

相關文章