2013-09-27 26 views
3

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

所以,例如,我会在构建时在我的jar包内打包属性,图像和外部罐。然后部署过程将包括将罐子移动到它要运行的位置,并调用ant <someOption> myjar.jar/build.xml deploy或类似的东西。

这有道理吗?

+0

相关问题:http://stackoverflow.com/questions/23515394/running-an-ant-build-xml-file-inside-a-jar-file –

回答

1

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

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

$ unzip myjar.jar build.xml

$ ant deploy

$ rm build.xml

但它是必要的应用程序运行环境是否只安装了ant来提取这些资源?难道它不能在你的应用程序内完成吗?或者你不能与你分发一个zip文件,罐子,图书馆罐子和图像?

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

+0

这非常有用。谢谢。如果目标环境要运行java代码,并且构建过程已经利用了ant,我认为它可能成为安装程序。但它看起来更加复杂,而不是必要的。我想我会编译和构建jar,建立目录结构,然后将整个东西拉紧。然后我可以在目标机器上解压缩。 – Fabien

1

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

你可以扩展它来处理XML源,它可以(可能使用的getResourceAsStream(..))

[附注来自罐子:您可以通过编程执行ant。无需提取并运行命令行 - 请参阅Running ANT Programmatically Through Java]

相关问题