递归地将jar包含到类路径中

时间:2011-10-11 16:35:25

标签: java ant

我有一个项目,在几个目录中有几个第三方JAR文件。目前,该项目使用一些ant技巧以递归方式将所有jar文件包含到类路径中。我想为另一个站点构建一个部署,其中包括JAR将我自己的代码放入一个文件中,并以某种方式包括我需要的其他JAR。 Oracle claims命令行上的通配符不会递归地包含jar。我希望部署在Windows或Linux中运行。

似乎我有以下选择:

  1. 在我的JAR中包含ant并运行现有脚本。
  2. 以某种方式将jar重新组织到一个目录中,这样我就可以在classpath中使用通配符了。希望它不会打破第三方库。
  3. 手动创建一个大而丑陋的类路径。
  4. 有没有人知道更简单的方法?我现在倾向于选择#1。

3 个答案:

答案 0 :(得分:2)

我会选择#2。构建发行版时,将所有jar复制到“lib”目录,然后使用通配符将它们全部包含在内。在做这样的事情时,我从来不知道第三方图书馆要打破。  使用ant应该没有太多的技巧:使用copy with flatten =“true”并包含指示要递归的目录/ jar的文件集。

答案 1 :(得分:0)

选项4:目标是使用

简化应用程序的启动
java -jar your.jar

主类和类路径在MANIFEST.MF的{​​{1}}中设置。使用ant在构建时创建类路径。这可能是一个大的,丑陋的,嵌套的树或your.jar中一个又大又丑的扁平树。

有关示例,请参阅hereherehere

答案 2 :(得分:0)

您可以使用JarJar并将所有内容放在一个JAR文件中。您需要验证第三方许可和分发条款,以确保您可以重新打包其库。