1. <parent>继承
Maven提供了继承的机制来管理这些共同的依赖。你可以编写一个pom.xml文件作为父级pom配置,各个模块在自己的pom.xml中继承父级pom文件,就像上面的示例那样,使用<parent>元素标识继承的父级pom文件。
1.1父模块pom文件的编写:
1、父级pom文件的packaging必须是pom,它需要作为pom文件发布以便子pom继承。
2、在父级pom可以使用<dependencyManagement>配置依赖管理。在<dependencyManagement>下的依赖声明不会引入实际依赖,但是可以让子模块继承依赖配置。
3、在父级pom中可以使用<pluginManagement>配置插件管理。作用和<dependencyManagement>类似,只不过一个管理依赖一个管理插件。
1.2子模块pom文件的编写:
1、需要使用<parent>元素标识继承的父pom。可以使用<relativePath>标识父级pom的物理路径,子模块会直接从指定的路径加载父级pom文件,未指定该元素时,子模块将根据父级pom的坐标从Maven仓库查找。
2、子模块pom可以继承父级pom中除artifactId之外的大部分配置,因此子模块的groupId、version以及依赖的version都可以省略。
3、子模块pom中的<dependency>可以只写groupId与artifactId,不再写版本号。
例:
<!-- 父级pom-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>../GraduationProjectCollect</module>
<module>../GraduationProjectTrain</module>
<module>../GraduationProjectUse</module>
</modules>
(分割行)
<!--子级pom,不需要写<groupId>,<version>与<dependency>中的<version>-->
<parent>
<groupId>com.likeyichu</groupId>
<artifactId>GraduationProjectAll</artifactId>
<version>1.0</version>
</parent>
<artifactId>GraduationProjectCollect</artifactId>
<packaging>war</packaging>
<name>GraduationProjectCollect</name>
<description>GraduationProjectCollect-数据收集部分</description>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependencies>
2.<module>
一个项目由多个子项目组成时,可使用maven的module组织形式。
<!--总项目的pom文件打包形式必须为pom形式-->
<packaging>pom</packaging>
<!-- 在<modules>标签中配置<module>标签-->
<modules>
<module>../GraduationProjectCollect</module>
<module>../GraduationProjectTrain</module>
<module>../GraduationProjectUse</module>
</modules>