你能在一个位于jar里面的构建文件上运行Ant吗?

时间:2013-09-27 18:31:48

标签: java ant build jar

我想知道你是否可以在一个位于JAR中的构建文件上运行Ant。我之所以对此感兴趣,是因为我想在我的构建文件中包含一个“部署”目标,该目标可以在jar被移动到目的地后调用。该“部署”目标将负责提取运行该程序所需的资源和其他库。

因此,举例来说,我会在构建时将我的jar中的属性,图像和外部jar包装起来。然后,部署过程包括将jar移动到它要运行的位置,并调用ant <someOption> myjar.jar/build.xml deploy或类似的东西。

这有意义吗?

2 个答案:

答案 0 :(得分:1)

我认为ant没有办法在jar中获取构建文件。

对于您描述的方法,您需要解压缩build.xml并将其传递给ant。由于ant不将stdin作为构造文件的参数,因此您需要存储构建文件然后将其删除:

$ unzip myjar.jar build.xml

$ ant deploy

$ rm build.xml

但是,是否有必要在应用程序运行环境中安装ant才能提取这些资源?难道不能在你的申请表内完成吗?或者你不能随身携带一个带有jar,库罐和图像的zip文件吗?

或者创建安装程序应该更合适:I\Pack或者,如果仅限Windows,NSIS

答案 1 :(得分:1)

Ant的构建文件解析可以使用ProjectHelper进行扩展。默认值只加载文件(source)。

你可以扩展它来处理一个XML源,它可以来自一个jar(可能使用getResourceAsStream(..))

[旁注:您可以通过编程方式运行ant。无需提取然后运行命令行 - 请参阅Running ANT Programmatically Through Java]