2011-06-30 53 views
3

我正在將一個項目從ant移植到maven。該項目由一組核心類組成,它們被3-4個其他子項目使用並加以使用。重要的是(我認爲?),核心jar有自己的配置,在構建時設置,並且每個子項目也在構建時設置配置。在舊的螞蟻系統,只要我建有類似的子項目之一...Maven:項目繼承或聚合是否更好地支持這種情況?

ant -Dconfiguration=stage clean dist 

...這將使用相同的(階段)的配置打造核心罐子,並將其複製到類目錄子項目的構建。我想用maven複製這個功能。從我所做的閱讀中,似乎Maven可以使用項目繼承或聚合來處理此問題。這兩種方法之間的主要區別是什麼,以及對於我所描述的用例,您會推薦哪些?

回答

3

繼承用於在項目之間共享公共事物,例如第三方庫依賴項或屬性或scm位置。聚合用於將您的項目構建爲一個組。你想要聚合,但這並不意味着你不會使用繼承來分解常見的東西。

更新:也請記住,Maven是不只是建築(不像螞蟻),它是關於依賴性管理,所以你可以只建立於核心的依賴,而不是使用聚合的。你會依賴於你的核心的特定版本。但是,這並不能滿足您一次性構建所有內容的要求。

+0

是的,我認爲,但考慮到核心都有自己的配置,而且配置必須與子項目或「不好的事情」會發生,它似乎只是直線上升的依賴不會削減它匹配。 –

+1

所以配置很可能會走在父POM(繼承),但你仍然可以使用的依賴。 –

+0

我應該詳細說明;核心包含環境特定的配置(在階段中,寫入該數據庫,在prod中,而不是寫入)。子項目也是如此。如果核心工件進行配置,比如說,生產,和我建立與階段配置的子項目,並且只是使用依賴,我會在配置無效告終。 –