2011-05-09 67 views
7

在Maven中,是否有可能將通常重複的片段重構爲可重用的「庫」(插件)?我意識到我可以編寫我自己的插件,但是我經常想要重用的功能已經在pom.xml中表示爲片段,我自然傾向於重用機制應該保留這些片段作爲 XML。您可以將Maven pom.xml文件重構爲可重用的XML片段嗎?

案例分析我一直在使用,用來從新澤西/ JAX-RS的源代碼WADL文件,然後從WADL和源代碼自身的Javadoc生成的開發者文檔的程序(partly described here)得到。該頁面上的過程描述了兩個插件的執行,並且我使用了第三個插件(org.codehaus.mojo:exec-xsltproc)和我自己的XSL文件將WADL轉換爲HTML。

我在幾個Maven項目中使用過這個過程。樣板進來100 lines of XML。項目之間的變化僅僅是所討論的源代碼的包名(鏈接的樣板文件中的​​)。因此,不可能將其移入父pom或任何其他不允許參數化的機制。

我想是聚合,模板,或以其他方式重構這100行(和一個XST文件)到一個共同的位置。我意識到可重複使用的Maven執行通過Maven插件提供。理想情況下,我不必編寫任何Java(或Groovy)來重新表達我已經用XML表達的內容。

是否有可能重構的Maven的pom.xml文件 XML?

回答

4

你是對的,這並不容易。 「mixins」 - 正好描述了這種能力 - 已經在Maven路線圖上出現了一段時間。

您可以使用父POM分享他們,假設所有這些項目都有一個共同的祖先。您可以只配置不同的元素,並將其與其餘元素進行合併,或者您可以爲其指定一個屬性值,該值在使用時定義。我明白,一般來說這不適合這種用例,因爲父級描述的是結構而不是項目類型。

另一種選擇是爲這樣的項目創建一個原型。這允許您定義一次並生成新的項目,但它不是直接重用的東西。

現在最好的解決方案可能是一個自定義插件 - 我相信這是Don Brown編寫mojo-executor插件的靈感,現在生活在:https://github.com/TimMoore/mojo-executor。但是,您需要Java/Groovy :)

1

你也許可以創建一個唯一的聚甲醛項目,在項目通過<父>標籤添加這些100線那裏,並繼承他們..

+0

這是一個可行的方法在小(我暗示在問題中)。缺點是你只能做一次 - 例如你不能把多個父母組合在一起。 – 2011-05-09 12:09:40

+1

你可以創建一個鏈接層次..這將有點混亂,但應該工作。 parent1-> parent2-> parent3->你的模塊 – mglauche 2011-05-09 12:15:42

2

與大多數的問題,你會面對你的Maven旅程,答案是螞蟻。

創建一個完全按照你想要的方式創建的Ant構建腳本,然後通過maven-antrun-plugin調用它。

由於可用於maven的所有屬性在目標配置中也可用,因此可以通過maven屬性配置構建腳本。

Maven的:0, 螞蟻:1.

QED。

+0

你的方法不允許使用現有的Maven插件(如上例),是嗎? – 2011-05-09 12:06:48

+0

你可以將這3個maven插件更改爲等效的Ant任務嗎? – npellow 2011-05-09 23:18:10

相關問題