你能否在一个位于jar文件内的构建文件上运行Ant?

3
我想知道您是否可以在一个位于JAR内的构建文件上运行Ant。我对此感兴趣的原因是,我想在我的构建文件中包含一个“deploy”目标,在JAR被移动到其目的地后可以调用该目标。 "deploy"目标将负责提取资源和其他库以运行程序。
例如,当构建时,我会将属性、图像和外部jar打包到我的jar中。然后,部署过程将包括将jar移动到它应该运行的位置,并调用ant <someOption> myjar.jar/build.xml deploy或类似的命令。
这样说清楚了吗?

相关问题:https://dev59.com/NH_aa4cB1Zd3GeqP3XIQ - Parag Doke
2个回答

1
我认为没有一种方法可以让ant在jar文件内获取构建文件。
对于您描述的方法,您需要解压缩build.xml并将其传递给ant。由于ant不将stdin作为构建文件的参数,因此您需要存储构建文件,然后删除它: $ unzip myjar.jar build.xml $ ant deploy $ rm build.xml 但是,在应用程序运行环境中安装ant以仅提取这些资源是否有必要?不能在您的应用程序内部完成吗?或者您无法分发带有jar、库jar和图像的zip文件吗?
或者创建一个安装程序可能更合适:I\Pack 或者如果只在Windows上,NSIS

这非常有用。谢谢你。如果目标环境将运行Java代码,并且构建过程已经利用了Ant,我认为它可能也会成为安装程序。但是看起来比必要的更复杂。我想我会编译和构建jar文件,构建目录结构,然后将整个东西压缩起来。然后我只需在目标机器上解压缩即可。 - Fabien

1

Ant的构建文件解析可以使用ProjectHelper进行扩展。默认的仅加载文件(源代码)。

您可以将其扩展为处理来自jar的XML源(可能使用getResourceAsStream(..))

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接