Maven對依賴包的關係管理的主要手段是繼承,這很像Java語言的繼承關係同樣。例如最簡單的繼承方式,在parent pom文件定義了jar的version,在children pom中能夠不定義jar的version,而children也能夠定義version來覆蓋parent的version,這種思想徹底和Java的繼承與重載機制一致。設計
<parent> <groupId>...</groupId> <artifactId>...</artifactId> <version>x.x.version</version> </parent>
關於Java爲何被設計成不支持多繼承,你有什麼想說的嗎?設計Java的老人家也許有他老人家當時的理由,而在Java8支持了接口裏可有默認方法的實現,這雖然沒有擺脫Java單繼承的限制,但也代表了Java對多繼承機制的一種支持。Maven對繼承的管理機制和Java的繼承機制一模一樣,一樣也面對着這樣的問題,如一個pom只能夠繼承一份pom,那若是有多份pom想繼承該怎麼辦,下面是Maven給出一種辦法:code
<dependencyManagement> <dependencies> <dependency> <groupId>a.b.c</groupId> <artifactId>def</artifactId> <version>x.x.version</version> <type>pom</type> <scope>import</import> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <!—繼承上述pom的jar的version定義 --> <groupId>a.b.c</groupId> <artifactId>def</artifactId> </dependency> </dependencies>
利用scope:import的方式能夠解決單繼承的問題,這樣也至關於繼承了這份pom,咱們能夠在這份pom文件裏定義jar的version,而後在依賴時就不須要傳入version配置了繼承