2013-05-07 42 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

相关问题