IDEA如何打包可執行jar的一個問題。
背景:
有時候,我們會用IDEA來開發一些小工具,需要打成可執行的JAR包;或者某些專案不是WEB應用,純粹是後臺應用,釋出時,也需要打成可執行的JAR包。並且,如果依賴第三方jar時,又不希望第三方jar也打入最終的可執行jar包,並且還希望,組織下目錄結構(如把第三方jar檔案,放到最終可執行jar包的並行目錄lib下)
開發環境
OS: Windows 8.1
JDK: 1.7.0
開發工具: IntelliJ IDEA 13.1.1
步驟:
1. 選中Java專案工程名稱,在選單中選擇 File->project structure... (快捷鍵Ctrl+Alt+Shift+S
2. 在彈出的視窗中左側選中"Artifacts",點選"+"選擇jar,然後選擇"from modules with dependencies"。
3. 在配置視窗中配置"Main Class"。
4. 選擇“Main Class”後,選擇“copy to the output and link via manifest”,配置“Directory for META-INF/MAINFEST.MF”,此項配置的預設值是:D:\workshop\DbUtil\src\main\java,需要改成:D:\workshop\DbUtil\src\main\resources,如果不這樣修改,打成的jar包裡沒有包含
5. 右鍵“<output root>”,選擇“Create Directory”,輸入目錄名:lib
6. 用滑鼠按住第三方jar,拖入<output root>下的lib目錄下
7. 用滑鼠選中我們將要打出的jar包檔案,點選下方“Class Path:”後面的按鈕,在“Edit Classpath”視窗中,將每個第三方jar檔案前加上相對路徑:lib\,形成如:lib\xxx.jar的形式,這個目錄“lib”,就是前面輸入的那個“lib”,這裡如果第三方jar很多的話,可以
8. 完成後,點選OK,Apply等按鈕,回到IDEA的主選單,選擇“Build - Build Artifacts”下的“Build”或者“Rebuild”即可生成最終的可執行的jar,並把第三方jar放到和此jar並行的lib目錄下,用winrar開啟目標jar,可以看到META-INF/MAINFEST.MF檔案被正確包含,內容也正確。
9. 在jar包的輸出目錄下,執行命令:java -jar xxx.jar,即可執行jar檔案。