2012-04-22 101 views
2

我的問題是,我寫了一個maven插件將工件部署到用戶指定的位置。我現在正在嘗試編寫另一個Maven插件來使用此已部署的工件,更改一些內容並再次壓縮它。 我想編寫第二個插件,這樣我可以使用第一個插件來獲取它的部署位置信息。 我不知道如何從第一個插件訪問這些信息。Maven插件;使用一個輸出作爲另一個輸入

+0

在哪種類型的插件是特別與maven-deploy-plugin等比較的。那麼爲此編寫一個maven-plugin的原因是什麼?爲什麼你重新發明輪子,導致像maven-assembly-plugin這樣的插件已經存在?.. – khmarbaise 2012-04-22 11:52:09

回答

0

我同意@Barend,如果你有能力在部署之前做出改變,那可能是最好的策略。

如果你不能這樣做,你可以按照像Maven Release插件這樣的插件策略。 Maven發佈插件分兩個階段運行,第二個運行需要輸出第一個運行。他們通過保持臨時性質攜帶像標籤名稱的信息項目目錄中的文件進行管理,快照版本命名等

你可以使用與插件相同的方法。只要記住,你的插件將是一種事務性的,它希望在其能夠完成它的工作之前運行其他目標。

0

在我看來,最簡單的解決方法是顛倒插件運行的順序。

讓插件B先運行,使用target/下的已知位置修改工件,然後運行插件A,將修改的工件部署到配置的位置。

如果這沒有選擇,我建議你只需複製配置值(以便兩個插件被告知有關<configuration>元素中的新位置)。這使得兩個插件都是獨立的,Maven認爲它們是獨立的。

最後一個選項是讓插件B解析整個POM並從插件A的<configuration>元素中提取信息,但我真的不能推薦這個。如果你這樣做,這兩個插件是如此緊密地交織在一起,以至於它們只是一個插件。這是糟糕的設計,違反了最小驚喜的原則,並可能導致惡劣的配置問題。

相關問題