我在我的java项目中添加了一些外部库(在netbeans中) 是否可以将外部jar库放入java存档(而不是将它们放入单独的(例如)“lib”目录中)?
答案 0 :(得分:4)
当然可以。有一些开源项目可以使用包含所有依赖项的“捆绑jar”下载 你需要提取所有的罐子然后再将它们装到一个文件中 可以看到使用Ant执行此操作的示例here。
答案 1 :(得分:1)
JarJar项目允许您将依赖jar包打包到一个jar文件中进行分发。
项目提供了一个执行打包的ant任务,而netbeans项目使用Ant进行构建过程,你应该能够很容易地将它集成到你的构建中。
答案 2 :(得分:1)
是的,这是可能的,生成的jar实际上被称为“uberjar”或“megajar”。基本上,要创建“uberjar”,您需要提取外部库的内容(使用jar -x
)并在您自己的jar中重新打包(使用jar -c
)。这可以通过手工实现,或者使用像Ant这样的构建工具(以及像One-JAR这样的项目的可选支持)或Maven,通过maven-assembly-plugin(或者maven)对此进行内置支持。 -shade-插件)
答案 3 :(得分:0)
如果是将罐子装入罐子,这对于战争或耳朵文件中的网络应用程序来说总是如此。 如果您的应用程序是独立的,您可以解压缩jar并使用Ant jar和unjar任务将它们全部打包在一个生成的jar中:http://ant.apache.org/manual/Tasks/unzip.html 但我不建议这样做。
答案 4 :(得分:0)
如果您使用的是Maven,则可以考虑使用Maven shade plugin或程序集插件。
答案 5 :(得分:0)
使用内置的ant脚本可以轻松实现。
还有另一个SO问题指向这篇文章:http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/
我添加了它,但是这样的菜鸟我不知道如何使用它。 This article有一个很棒的视觉教程。基本上,在修改ant脚本后,转到文件选项卡(在左侧的资源管理器中)=>右键单击xml => run tasks =>其他任务=>商店包(或任何你命名的脚本)