我想知道是否可以在位於JAR內部的構建文件上運行Ant。我對此感興趣的原因是因爲我希望在我的構建文件中包含一個「部署」目標,該目標可以在jar移動到目標後調用。該「部署」目標將負責提取運行程序所需的資源和其他庫。你可以在位於jar中的構建文件上運行Ant嗎?
所以,例如,我會在構建時在我的jar包內打包屬性,圖像和外部罐。然後部署過程將包括將罐子移動到它要運行的位置,並調用ant <someOption> myjar.jar/build.xml deploy
或類似的東西。
這有道理嗎?
我想知道是否可以在位於JAR內部的構建文件上運行Ant。我對此感興趣的原因是因爲我希望在我的構建文件中包含一個「部署」目標,該目標可以在jar移動到目標後調用。該「部署」目標將負責提取運行程序所需的資源和其他庫。你可以在位於jar中的構建文件上運行Ant嗎?
所以,例如,我會在構建時在我的jar包內打包屬性,圖像和外部罐。然後部署過程將包括將罐子移動到它要運行的位置,並調用ant <someOption> myjar.jar/build.xml deploy
或類似的東西。
這有道理嗎?
我認爲ant
沒有辦法在jar中獲得構建文件。
對於您描述的方法,您需要解壓縮build.xml
並將其傳遞給ant。由於螞蟻不採取stdin
作爲參數來構建文件,你需要存儲構建文件然後將其刪除:
$ unzip myjar.jar build.xml
$ ant deploy
$ rm build.xml
但它是必要的應用程序運行環境是否只安裝了ant來提取這些資源?難道它不能在你的應用程序內完成嗎?或者你不能與你分發一個zip文件,罐子,圖書館罐子和圖像?
這非常有用。謝謝。如果目標環境要運行java代碼,並且構建過程已經利用了ant,我認爲它可能成爲安裝程序。但它看起來更加複雜,而不是必要的。我想我會編譯和構建jar,建立目錄結構,然後將整個東西拉緊。然後我可以在目標機器上解壓縮。 – Fabien
Ant的構建文件解析可以使用ProjectHelper進行擴展。默認只加載文件(source)。
你可以擴展它來處理XML源,它可以(可能使用的getResourceAsStream(..))
[附註來自罐子:您可以通過編程執行ant。無需提取並運行命令行 - 請參閱Running ANT Programmatically Through Java]
相關問題:http://stackoverflow.com/questions/23515394/running-an-ant-build-xml-file-inside-a-jar-file –