2012-09-19 169 views
1

我有一個maven multimodule項目,我希望我可以使用配置文件來定製基於POM屬性的兩種情況的插件配置,但事實證明配置文件只能由外部屬性激活,而不能由POM屬性,所以現在我正在尋找另一種方式來有不同的項目配置,我想獲得一些想法。這裏是我的設置maven自定義插件配置

我有一個三級樹:一個根父母POM X與許多許多子模塊A,B,C,...和每個這些模塊有2個子模塊1和2(所以A1,A2 ,B1,B2等)

我需要做的是爲類型1的所有模塊自定義葉模塊的配置,爲類型2的所有模塊自定義另一模塊的配置。我試圖避免讓所有1共享一個共同父母和所有2的另一(不同)共同父母,因爲1和2已經從他們各自的父母(例子A或B)共享一些數據。如果沒有其他方法,我會將所有常見數據從A降到A1和A2(不理想,DRY原則),並使所有1都從共同的父親繼承,但我試圖避免這種情況。就像我說的,我嘗試的是在樹的樹葉中設置屬性,指定屬性是1還是2,然後將兩個不同的配置文件放在祖父POM X中,並根據屬性激活配置文件。這沒有奏效。

其他建議?

+1

請考慮使用說明您的模塊佈局並指定您正在使用的插件的圖來修改此問題 - 必要時使用pom.xml片段。 – noahlz

回答

-1

我相信你可以用<pluginManagement>

例如實現你的目標,你的父POM,你有這樣的事情:

<pluginManagement> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
     <systemPropertyVariables> 
       <vendor.license.file>../licenses/vendor.lic</vendor.license.file> 
     </systemPropertyVariables> 
     </configuration> 
    </plugin> 
</pluginManagement> 

其中在對POM的子模塊定義神火2.5版。請注意,您實際上可以在插件配置中放入更多的版本,例如子項目繼承(並覆蓋)的配置。請參閱Maven POM Reference - Plugin Management

+0

你的解決方案不允許有兩種不同的配置,這是我需要的: if(是類型1){使用配置1} else if(是類型2){使用配置2} – Hilikus

+0

「type 1「和」類型2「有不同的父母POM?另外,您是否可以根據屬性以外的其他內容激活您的配置文件,例如存在文件?你是否可以在每個子模塊中創建一個配置文件並使其「默認情況下處於活動狀態?」 – noahlz

+0

現在他們有一個共同的父母,就像我在我的OP中說過的那樣,有A1,A2,所以他們共享父母A,B1,B2共享父母B.我提到的選項是讓A1和B1共享父母common1,而A2 B2共享父母common2。但是我**在A和B中有共同的信息,需要在A1和A2中下推並複製 – Hilikus