可执行JAR&蚂蚁

时间:2011-09-06 17:20:49

标签: java configuration ant build

我第一次为可执行JAR编写了一个Ant build.xml文件,并且难以理解我需要包含在JAR中的内容。

可以认为该项目由以下内容组成:

  1. 源代码
  2. 少数依赖JAR
  3. IoC的Spring配置文件(XML),通过ClassPathXmlApplicationContext
  4. 这是我的问题:因为这是一个可执行的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。

    感谢您的任何意见!

1 个答案:

答案 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
             ...