将外部库放入JAR包?

13

我已经将一些外部库添加到我的Java项目中(在NetBeans中)。

是否有可能将外部JAR库放入Java存档中(而不是将它们放入单独的(例如)“lib”目录中)?


“to the java archive” 是什么意思? - danben
3
我猜Jani想把所有的jar(库文件)放到一个唯一的jar中。 - Pierre
6个回答

4
当然可以。有一些开源项目可以下载,其中包含一个“bundle jar”文件,其中包含所有依赖项。
您需要提取所有的jar文件,然后将它们再次打包成一个文件。
使用Ant完成此操作的示例可以在这里查看。

1

JarJar 项目允许您将依赖的 jar 包打包成一个单独的 jar 文件进行分发。

该项目提供了一个 Ant 任务来执行打包操作,由于 NetBeans 项目使用 Ant 进行构建过程,因此您应该能够相对容易地将其集成到您的构建中。


1

是的,这是可能的,而且生成的jar实际上被称为“uberjar”或“megajar”。基本上,要创建一个“uberjar”,您需要提取外部库的内容(使用jar -x),并将其重新打包到自己的jar中(使用jar -c)。这可以手动完成,也可以使用构建工具如Ant(和像One-JAR这样的项目的可选支持)或Maven来完成,后者通过maven-assembly-plugin(或maven-shade-plugin)内置支持此功能。


0

如果涉及将jar文件打包到另一个jar文件中,这通常是通过war或ear文件来实现Web应用程序的。 如果您的应用程序是独立的,您可以使用Ant jar和unjar任务解压缩所有jar文件并将它们打包在一个结果jar文件中:http://ant.apache.org/manual/Tasks/unzip.html 但我不建议这样做。


0
如果您正在使用Maven,可以考虑使用Maven shade插件或者assembly插件。

0

使用内置的ant脚本有一种简单的方法可以实现。

还有另一个SO问题指向了这篇文章:http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/

我添加了它,但是当时我太菜了,不知道如何使用它。这篇文章有一个很好的视觉教程。基本上,在修改您的ant脚本之后,转到文件选项卡(在左侧的资源管理器中)=>右键单击xml=>运行任务=>其他任务=>打包存储(或任何您命名的脚本)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接