什么是Maven聚合特性?
能夠把項目的各個模塊聚合在一起構(gòu)建,這種方式就是聚合。不用我們手動依次install各個模塊了,提高工作效率。
現(xiàn)在呢,就把我們之前的【maventest-a】、【maventest-b】、【maventest-c】進行聚合。打開Eclipse,創(chuàng)建新項目【maventest-aggregation】。
打開并編輯【maventest-aggregation】的pom.xml:
- 將<package>標(biāo)簽值改為pom,作為聚合項目的容器,則必須pom;
- 增加<models>標(biāo)簽,將子項【maventest-a】、【maventest-b】、【maventest-c】依次添加。
如圖:
保存,并【Run As】→【Maven Build】,輸入命令:clean install
運行之后,它會依次將a、b、c打包安裝到本地倉庫。
這就是聚合了,那么……
什么是Maven的繼承特性呢?
能夠幫助抽取各模塊相同的依賴和插件等配置,在簡化 pom 配置的同時,還能促進各個模塊配置的一致性。
例如,我們的【maventest-a】、【maventest-b】、【maventest-c】項目都在pom引入了junit依賴。這就導(dǎo)致我們項目很冗余。那怎么辦呢?這時就需要用到繼承特性,創(chuàng)建項目父模塊【maventest-parent】。
在【maventest-parent】的pom.xml中添加<dependencyManagement>標(biāo)簽。這個標(biāo)簽在pom.xml常用元素中講到過。
添加好后,就是這樣的:
為了防止以后pom.xml變龐大,版本號不易找到和修改,可以將junit的version的值,單獨提出來到<properties>標(biāo)簽里,并使用EL表達式引用。
然后將<package>值改為pom,作為父模塊這個值必須為pom。又因為是父模塊,一般是不在main和test里寫代碼的,這兩個目錄,都可以刪除。
最后【maventest-parent】的pom.xml:
左側(cè)目錄結(jié)構(gòu):
父模塊完成,打開子模塊。以【maventest-a】為例:
- 在它的pom中增加<parent>標(biāo)簽并把【maventest-parent】的坐標(biāo)添加進去。
- 將junit依賴的版本號和依賴范圍刪掉,保留<groupId>和<artifactId>。這是因為,父模塊雖然引入了junit,但是還需要子模塊聲明<groupId>和<artifactId>才可以使用。
如圖: