2013-11-22 40 views
0

我們假設我正在開發多個軟件產品。在這種情況下,產品是我想要構建的東西,並且通常不是另一個產品的依賴關係。產品依賴於庫。如何使用Maven構建多產品工作?

採取以下的依賴作爲一個例子,我相信這是一個polytree:

ProductA 
├── lib_a 
└── lib_b 

ProductB 
├── lib_b 
└── lib_c 

Dependency graph

(在現實生活中的產品和存儲庫的數量要大得多)

當我處理每個產品時,通常會對產品及其依賴關係進行更改。我想要構建我的工作,以便在構建項目時構建所有依賴關係。

當我進行更改時,我還更新每個產品和庫的版本並將其存儲到版本控制。但是,我不想更新未更改的產品和庫的版本。

假設我想使用Maven構建我的項目。我應該如何構造它們以便始終構建整個產品?我可以使用多個版本控制存儲庫嗎?

回答

1

用於您的要求簡單的建議看起來是這樣的:

Parent POM         <-- <packaging>pom</packaging> 
    module ProductA (dependencies: a and b) <-- <packaging>jar</packaging> 
    module ProductB (dependencies: b and c) 
    module lib_a        <-- <packaging>jar</packaging> 
    module lib_b 
    module lib_c 

這將建造,安裝和部署用一個命令所有的文物。這將需要相應的文件夾結構 - 模塊應該更好地處於同一級別。理論上可以將它們放入不同的存儲庫,但這會打破Maven Release插件。

+0

「會打破Maven發佈插件」 - 到底如何? –

+1

對不起,我應該說**可以** - 我只是從經驗談起 - Maven Release插件真的很多,並且對更改默認值非常敏感。谷歌搜索後,我發現它確實打破:[Maven發佈插件,多個svn回購?](http://maven.40175.n5.nabble.com/Maven-release-plugin-multiple-svn-repos-td5717816。 html) –

+0

這個問題經常被問到,所以我剛剛創建了一個如何以輕快的方式用Idea管理多模塊項目的截屏:http://stackoverflow.com/a/20163892/1851024。可能有幫助... –