我已经将一些外部库添加到我的Java项目中(在NetBeans中)。
是否有可能将外部JAR库放入Java存档中(而不是将它们放入单独的(例如)“lib”目录中)?
我已经将一些外部库添加到我的Java项目中(在NetBeans中)。
是否有可能将外部JAR库放入Java存档中(而不是将它们放入单独的(例如)“lib”目录中)?
JarJar 项目允许您将依赖的 jar 包打包成一个单独的 jar 文件进行分发。
该项目提供了一个 Ant 任务来执行打包操作,由于 NetBeans 项目使用 Ant 进行构建过程,因此您应该能够相对容易地将其集成到您的构建中。
是的,这是可能的,而且生成的jar实际上被称为“uberjar”或“megajar”。基本上,要创建一个“uberjar”,您需要提取外部库的内容(使用jar -x
),并将其重新打包到自己的jar中(使用jar -c
)。这可以手动完成,也可以使用构建工具如Ant(和像One-JAR这样的项目的可选支持)或Maven来完成,后者通过maven-assembly-plugin(或maven-shade-plugin)内置支持此功能。
如果涉及将jar文件打包到另一个jar文件中,这通常是通过war或ear文件来实现Web应用程序的。 如果您的应用程序是独立的,您可以使用Ant jar和unjar任务解压缩所有jar文件并将它们打包在一个结果jar文件中:http://ant.apache.org/manual/Tasks/unzip.html 但我不建议这样做。
使用内置的ant脚本有一种简单的方法可以实现。
还有另一个SO问题指向了这篇文章:http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/
我添加了它,但是当时我太菜了,不知道如何使用它。这篇文章有一个很好的视觉教程。基本上,在修改您的ant脚本之后,转到文件选项卡(在左侧的资源管理器中)=>右键单击xml=>运行任务=>其他任务=>打包存储(或任何您命名的脚本)