2012-10-05 69 views
0

我有大約30個項目,其中6個必須有特殊的(但相同的)構建過程。所有這些項目都從單親繼承。 我已經在父項中定義了特殊的構建過程。它包括幾個插件和大量的配置。在pom.xml中強制運行配置文件父POM

繼承structore是這樣的:

- global-parent (this is the place where special profile is defined) 
    -a-parent 
     -a-ear 
     -a-war 
     -a-ejb 
     -a-special <-- 
    -b-parent 
     -b-ear 
     -b-war 
     -b-ejb 
     -b-special <-- 
    -c-parent 
     -c-ear 
     -c-war 
     -c-ejb 
     -c-special <-- 
    etc... 

所以我不能讓這些特殊項目繼承另一個POM。

如何在pom.xml中的那些特殊項目中設置「標誌」來運行總是special-profile

現在我已經設置了profile/activation/file/extsts,並在每個特殊項目中創建了一個特殊的空標記文件,但這非常難看。 我也嘗試使用maven-properties-plugin來設置一些系統屬性標誌,但它仍然很難看。

必須有更多的方法。這是一個糟糕的設計?

回答

1

這樣做的標準方法是有兩個級別的父項目。我用一個「global-parent」和一個「webapps-parent」來完成這項工作,它只爲webapp組件提供了常見的配置/配置文件。然而,我觀察到你需要像Maven中不存在的「多重繼承」之類的東西。

否則,在我看來,「文件存在」激活是可以接受的。

附錄

不知道什麼是確切的「特殊」關於特殊模塊,這是很難回答的有些主觀的問題,「這是糟糕的設計?」

也許一個封裝所有其他插件的自定義插件會是「更好」或「更多Maven-ish」,但在一天結束時 - 您的構建是否可維護且易於運行(即svn co project; cd project; mvn package)?

如果是這樣,你已經實現了你的目標。

+0

我會說,「文件存在」可能比基於屬性的激活更少「Maven」。但我同意父母的兩個層次。 –

+0

多重繼承將成爲現實。另一種方式是將某種插件分組爲一個「類似插件的插件」。就像一個宏或類似於「導入」依賴項但是用於插件的東西。 –