1. 程式人生 > >idea本地打包,引用第三方包(包括maven將本地包加入本地倉庫)

idea本地打包,引用第三方包(包括maven將本地包加入本地倉庫)

一、將jar新增到本地倉庫的做法:
以下面pom.xml依賴的jar包為例:

實際專案中pom.xml依賴寫法:


org.springframework
spring-context-support
3.1.0.RELEASE

Maven 安裝 JAR 包的命令是:

mvn install:install-file
-Dfile=jar包的位置
-DgroupId=上面的groupId
-DartifactId=上面的artifactId
-Dversion=上面的version
-Dpackaging=jar
例如我的這個spring-context-support-3.1.0.RELEASE.jar 檔案放在了”D:\mvn\”中

則命令為:mvn install:install-file -Dfile=D:\jna.jar -DgroupId=com.sun.jna -DartifactId=examples -Dversion=1.0 -Dpackaging=jar

mvn install:install-file
-Dfile=D:\mvn\spring-context-support-3.1.0.RELEASE.jar

-DgroupId=org.springframework

-DartifactId=spring-context-support

-Dversion=3.1.0.RELEASE

-Dpackaging=jar

注意:任何路徑和名稱不要有中文和空格,以防出現莫名其妙的錯誤。

還可以解決本地倉庫是從別人那邊複製的,但是需要的jar包中央倉庫不存在,導致的執行package時出現以下異常

Failed to execute goal on project relayserver: Could not resolve dependencies for project com.xxx:xxx:war:1.0-SNAPSHOT: Failure to find xxx.xxx:xxx:jar:1.0 in http://maven.aliyun
.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced

二、不講jar包新增到本地倉庫也可在maven工程中使用外部jar包的做法:
假設將包htmlparser.jar放入了專案下的lib目錄中 :
-> project/lib/htmlparser.jarpom.xmlcom.htmlparserhtmlparser2.0system{project.basedir}/lib/htmlparser.jar

以上是maven加入本地倉庫的做法,須知,maven預設配置檔案是setting.xml 其他自建的xml他不認。

背景:

有時候,我們會用IDEA來開發一些小工具,需要打成可執行的JAR包;或者某些專案不是WEB應用,純粹是後臺應用,釋出時,也需要打成可執行的JAR包。並且,如果依賴第三方jar時,又不希望第三方jar也打入最終的可執行jar包,並且還希望,組織下目錄結構(如把第三方jar檔案,放到最終可執行jar包的並行目錄lib下)

步驟:

1、 選中Java專案工程名稱,在選單中選擇 F12

這裡寫圖片描述

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包裡沒有包含META-INF/MAINFEST.MF檔案,這個應該是個IDEA的BUG(參考:http://stackoverflow.com/questions/15724091/how-to-run-a-jar-file-created-using-intellij-12),配置完成後如下圖所示,點選OK進入下一步。(如果選擇“extract to the target jar”,即把第三方jar檔案,打入最終的可執行jar包時,可以不修改“Directory for META-INF/MAINFEST.MF”的配置,用預設值即可)
這裡寫圖片描述

5、右鍵“”,選擇“Create Directory”,輸入目錄名:libs

這裡寫圖片描述

6、用滑鼠按住第三方jar,拖入下的libs目錄下

這裡寫圖片描述

7、用滑鼠選中我們將要打出的jar包檔案,點選下方“Class Path:”後面的按鈕,在“Edit Classpath”視窗中,將每個第三方jar檔案前加上相對路徑:libs/,形成如:libs/xxx.jar的形式(注意是 / ,而不是 \),這個目錄“libs”,就是前面輸入的那個“libs”,這裡如果第三方jar很多的話,可以在“Edit Classpath”視窗中,用滑鼠選中所有第三方jar,然後Ctrl+X,把內容cut & copy到UltraEdit裡,用列格式一下子全部修改好,再paste到“Edit Classpath”視窗中。完成後如下所示:

這裡寫圖片描述

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檔案。