我想知道你是否可以在一个位于JAR中的构建文件上运行Ant。我之所以对此感兴趣,是因为我想在我的构建文件中包含一个“部署”目标,该目标可以在jar被移动到目的地后调用。该“部署”目标将负责提取运行该程序所需的资源和其他库。
因此,举例来说,我会在构建时将我的jar中的属性,图像和外部jar包装起来。然后,部署过程包括将jar移动到它要运行的位置,并调用ant <someOption> myjar.jar/build.xml deploy
或类似的东西。
这有意义吗?
答案 0 :(得分:1)
我认为ant
没有办法在jar中获取构建文件。
对于您描述的方法,您需要解压缩build.xml
并将其传递给ant。由于ant不将stdin
作为构造文件的参数,因此您需要存储构建文件然后将其删除:
$ unzip myjar.jar build.xml
$ ant deploy
$ rm build.xml
但是,是否有必要在应用程序运行环境中安装ant才能提取这些资源?难道不能在你的申请表内完成吗?或者你不能随身携带一个带有jar,库罐和图像的zip文件吗?
答案 1 :(得分:1)
Ant的构建文件解析可以使用ProjectHelper进行扩展。默认值只加载文件(source)。
你可以扩展它来处理一个XML源,它可以来自一个jar(可能使用getResourceAsStream(..))
[旁注:您可以通过编程方式运行ant。无需提取然后运行命令行 - 请参阅Running ANT Programmatically Through Java]