2013-05-07 67 views
2

這裏有一個「簡單」問題,但使用Eclipse做這樣的事情似乎很複雜。在一個可執行文件罐中合併或合併所有罐子

我有一個「utils」項目,在這個項目中我開發了像XML解析器,記錄器,數學計算,調試工具等「常見」代碼。

該庫基於其他幾個外部庫(commons-lang-3.1,colt-1.2.0,jdom-2.0.4),並且它是一個不可運行的JAR文件(也就是說,沒有main(),只是要包含在其他項目中的實用程序代碼)。

我想要做的是,當我創建項目的JAR文件時,在JAR文件中提取所有外部JAR(common-lang,colt,jdom),以便在其他項目中自動使用它們。

原因是我不想在每個基於我的lib的項目中重新包含common-lang,小馬和jdom,但是使用包裝在我的lib JAR文件中的那些(並且這是一種確保我將在基於我的lib的項目中使用這些庫的相同版本)

我知道如何做到這一點與可運行的JAR文件。 例如見:How to create a jar with external libraries included in Eclipse?

但在非運行的JAR文件:

  • 我所有的類都正確地將出口在正確的目錄結構,根據我創建的包。(希望;-)),
  • 但是外部JAR文件是按原樣導出的,所以當我在另一個項目中導入JAR時,無法看到那些JAR(common-lang,...),我必須重新導入它們。

是否有一種簡單的方法可以將JAR文件導出爲目錄結構,其中所有外部JAR文件都在生成的JAR文件中提取?

問候

+0

可能的複製問題http://stackoverflow.com/questions/528007/eclipse-java-export-jar-include-referenced-libraries-without-fatjar?rq=1 – greedybuddha 2013-05-07 15:30:21

+0

是的,我已經看到了這個問題在stackoverflow,我運行Eclipse Helios(版本:3.6.1.r361_v2010090),所以看來我的Eclipse版本應該有這個選項。不幸的是,它僅適用於可運行的JAR文件 – 2013-05-07 15:41:17

+0

當然,通過'maven-jar-plugin'使用Maven。要將.jar實際執行爲「可運行」,請使用以下批處理腳本:https://gist.github.com/djangofan/4144970 – djangofan 2013-05-07 15:58:15

回答

3

你見過JarSplice

JarSplice通過易於使用的GUI將所有jar和本機文件合併成一個易於使用的可執行jar文件。

enter image description here

+0

不知道那個工具,我正在檢查它,似乎做我想做的事。但是,如果可能的話,我想從Eclipse內部創建/部署我的JAR文件。我仍在檢查是否有可能... – 2013-05-07 15:43:15