2008-11-27 162 views
3

我使用Ant構建了一個自定義的Maven2插件。我想在自定義Ant插件成功完成後立即調用另一個Maven插件,特別是貨物Maven2插件。但是,我不想將貨運插件附加到另一個目標或階段。有沒有辦法讓他們連續運行而不必編寫批處理腳本?是否有將Custom Ant插件調用到Cargo插件?Maven2生命週期幫助

回答

2

看到這個討論:Re: calling plugin in another plugin?根據Maven的開發者,這不是插件應該工作的方式。

然而,這個有趣的評論:

插件/ Mojos應該在圖書館瘦包裝。你想直接使用庫。

Cargo不僅是一個Maven插件,它還有一個Java API和一個Ant task。所以你可能會:

  • 從你的Ant mojo調用Cargo Ant任務

  • 在Java中重寫您的Ant mojo並調用Cargo API(您想查看Cargo插件的來源)。

0

maven-ant-plugin執行的Ant腳本並不真正瞭解Maven,此插件旨在與自定義Ant任務向後兼容。我想不出一種乾淨的方式來做你想做的事情,儘管可能會有某種黑客讓你去做。

也應該可以從Ant內部執行第二個Maven實例,該實例完全運行Cargo目標,但在這種情況下,您可能會遇到鎖定文件等問題。要做到這一點,只需在Ant腳本中使用一個標籤,並以適當的目標作爲參數調用「mvn」可執行文件即可。

最簡潔的方法是將貨物目標簡單地綁定到構建階段,並在Ant完成後運行。我不認爲這種方法有任何缺點 - 你沒有真正說明你爲什麼要避免它的具體原因。

0

你也許以下Maven感興趣的兩個

的GMaven插件可以讓你寫使用Groovy Maven插件。這使您可以使用Ant Builder完全訪問ant,這是在Groovy中編寫ant腳本的一種非常簡單的方法。 然後在這個Groovy mojo中,你可以使用Mojo Executor調用任何maven mojo。

我已經在幾個自定義maven插件中使用了這些,我還沒有找到一個更簡單的方法來編寫和組合mojos。