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配置了继承