gpt4 book ai didi

java - 可执行 JAR 和 Ant

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:58 25 4
gpt4 key购买 nike

我第一次为可执行 JAR 编写 Ant build.xml 文件,但对于需要在 JAR 中包含哪些内容感到困惑。

该项目可以被认为由以下部分组成:

  1. 源代码
  2. 一些依赖 JAR
  3. 通过 ClassPathXmlApplicationContext 用于 IoC 的 Spring 配置文件 (XML)

这是我的问题:由于这是一个可执行 JAR,我是否应该将所有依赖 JAR 也一起打包,还是应该将它们分开?我怀疑我需要将它们包含在 JAR 中,如果这是真的,那么组织我的 JAR 的最佳实践将是什么?

这是我的第一次尝试:

MyExecutableJARProgram.jar/
META-INF/
...
com/
lib/
config/

其中 com/ 是我的顶级包,lib/ 是包含所有这些依赖项的目录,config/ 保存所需的 XML 文件。

(1) 有什么想法吗?

另外,作为一个附带问题,由于 JAR 文件将具有与我的 Eclipse 项目不同的目录结构,因此我需要以某种方式为 JAR 设置类路径(以便它知道在 lib/ 中查找其依赖项),以及指定在哪里查找 Spring XML 文件。

(2) 如何在 JAR 中配置它 - list 文件? 必须有某种方法可以通过 Ant 配置 list (或此问题的答案)文件,这样我就不需要在每次构建时手动编辑 JAR。

感谢您的任何意见!

最佳答案

除非您愿意编写自定义类加载器,否则 list 类路径不支持嵌套 JAR。相反,一种典型的方法是将任何第三方二进制文件和您的 JAR 放在同一(或众所周知的)目录中,并使用 list 类路径相互引用。请记住, list 类路径中的条目是相对于主 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
...

关于java - 可执行 JAR 和 Ant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7323671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com