我有一个项目,在几个目录中有几个第三方JAR文件。目前,该项目使用一些ant技巧将所有jar文件递归地包含到类路径中。我想为另一个站点构建一个部署,其中包括将我自己的代码放入一个文件中的JAR,并以某种方式包含我需要的其他JAR。Oracle声称命令行上的通配符不会递归地包含jar。我希望部署能够在Windows或Linux中工作。
我似乎有以下选择:
- 在我的JAR中包含ant并运行现有的脚本
- 以某种方式将jar重新组织到一个目录中,这样我就可以在类路径中使用通配符。希望它不会破坏第三方库
- 手动创建一个又大又难看的类路径
有人知道更简单的方法吗?我现在倾向于选择#1。
我会选择#2。构建分发版时,将所有jar复制到"lib"目录中,然后使用通配符将它们全部包含在内。我从来没有见过第三方图书馆在做这样的事情时会崩溃。使用ant不应该有太多的技巧:使用flash="true"的copy,并包括指示要递归的目录/jar的文件集。
选项4:目标是让您的应用程序只需使用即可启动
java -jar your.jar
主类和类路径设置在your.jar
的MANIFEST.MF
中。使用ant在构建时创建类路径。在lib
中,这可以是一个又大又丑的嵌套树,也可以是一棵又大又难看的扁平树。
请参阅此处、此处和此处以获取示例。
您可以使用JarJar并将所有内容放在一个JAR文件中。您需要验证第三方的许可和分发条款,以确保您可以重新打包他们的库。