2013-09-27 56 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]

相關問題