我第一次为可执行JAR编写了一个Ant build.xml文件,并且难以理解我需要包含在JAR中的内容。
可以认为该项目由以下内容组成:
这是我的问题:因为这是一个可执行的JAR,我是否应该对所有依赖JAR进行JAR,或者我应该将它们分开?我怀疑我需要将它们包含在JAR中,如果这是真的,最佳实践会对组织我的JAR有什么要求?
这是我的第一次尝试:
MyExecutableJARProgram.jar/
META-INF/
...
com/
lib/
config/
com/
是我的顶级包,lib/
是包含所有这些依赖项的目录,config/
包含所需的XML文件。
(1)有什么想法吗?
另外,作为一个附带问题,由于JAR文件将具有与我的Eclipse项目不同的目录结构,因此我需要为我的JAR设置类路径(因此它知道查看,例如,{{1}它的依赖关系),以及指定查找Spring XML文件的位置。
(2)我如何在JAR中配置它 - 清单文件?必须有一些方法通过Ant配置清单(或者这个问题的答案),所以我每次构建时都不需要手动编辑JAR。
感谢您的任何意见!
答案 0 :(得分:1)
除非您愿意编写自定义类加载器,否则清单类路径不支持嵌套JAR。相反,典型的方法是将任何第三方二进制文件和JAR放在同一个(或众所周知的)目录中,并使用清单类路径相互引用。请记住,清单类路径中的条目是相对于主jar的。
因此,对于某些非平凡的项目,您的分发布局可能如下所示:
[apphome]
+-- bin
+-- command1.sh / .bat (to supply -Xmx etc)
+-- command2.sh / .bat
...
+-- lib
+-- module1.jar
+-- module2.jar
...
+-- command1.jar (manifest cp contains modules, 3rd party, main-class)
+-- command2.jar
...
+-- deps
+-- 3rdparty1.jar
+-- 3rdparty2.jar
...