【问题标题】:Combine or merge all jars in one executable jar将所有 jar 合并或合并到一个可执行 jar 中
【发布时间】:2014-08-09 04:39:47
【问题描述】:

这是一个“简单”的问题,但使用 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、colt 和 jdom,而是使用打包在我的 lib JAR 文件中的那些(这是一种确保我'将在基于我的库的项目中使用相同版本的库)

我知道如何使用可运行的 JAR 文件来做到这一点。 例如:How to create a jar with external libraries included in Eclipse?

但在不可运行的 JAR 文件中:

  • 我的所有类都根据我创建的包正确导出到正确的目录结构中(希望 ;-)),
  • 但是外部 JAR 文件是“按原样”导出的,所以当我在另一个项目中导入我的 JAR 时,这些 JAR(common-lang,...)无法看到,我必须重新导入它们.

有没有一种简单的方法来导出这个具有目录结构的 JAR 文件,其中所有外部 JAR 文件也被提取到生成的 JAR 文件中?

问候

【问题讨论】:

  • 是的,我已经在 stackoverflow 上看到了这个问题,并且我正在运行 Eclipse Helios(版本:3.6.1.r361_v2010090),所以看来我的 Eclipse 版本应该有这个选项。不幸的是,它只适用于可运行的 JAR 文件
  • 当然使用 Maven,通过 'maven-jar-plugin'。要将 .jar 实际执行为“可运行”,请使用此批处理脚本:gist.github.com/djangofan/4144970
  • 这从长远来看会给你带来痛苦。模块化和使用依赖项的更好主意。看看 maven 或 ant ivy。
  • 另外,为什么不让它可运行,以便您可以使用您知道的工具?

标签: java eclipse jar


【解决方案1】:

你见过JarSplice吗?

JarSplice 通过易于使用的 GUI 将所有 jar 和本机文件合并为一个易于使用的可执行 jar 文件。

【讨论】:

  • 不知道那个工具,我正在检查它,似乎做我想做的事。但如果可能的话,我想从 Eclipse 中创建/部署我的 JAR 文件。我仍在检查是否可能...
猜你喜欢
  • 2010-10-27
  • 1970-01-01
  • 2011-07-02
  • 2013-09-30
  • 2010-12-26
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多