1.聚合:n多个项目聚合在一个pom.xml文件中,对这个pom进行test,package等mav命令时,n多个项目会同时执行这些命令,不用每个项目分别执行这些命令。
聚合pom.xml必须,方法1和2都要有的
<modelVersion>4.0.0</modelVersion>
<groupId>mymaven</groupId>
<artifactId>aggregator-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
方法1:多个模块的同级(根目录)下新建pom.xml,加入
<modules>
<!-- 相对于此pom.xml的路径 -->
<module>./模块1的跟文件夹</module>
<module>./模块2的跟文件夹</module>
<module>./模块3的跟文件夹</module>
</modules>
方法2:新建一个Maven项目,可以是简单Maven项目,在跟目录下新建pom.xml,如:
/parent-maven/pom.xml,加入
<modules>
<!-- 相对于此pom.xml的路径 -->
<module>../模块1的跟文件夹</module>
<module>../模块1的跟文件夹</module>
<module>../模块1的跟文件夹</module>
</modules>
2.继承:n个pom.xml相同的类容可以放在一个pom.xml中,然后这用n个pom.xml来指定父pom.xml继承,修改父pom.xml后,必须发布到仓库,子pom才能继承最新的父pom
1.父pom.xml必须,方法1和2都要有的
<modelVersion>4.0.0</modelVersion>
<groupId>mymaven</groupId>
<artifactId>parent-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
方法1:多个模块的根目录下新建pom.xml,加入通用代码,父pom项目必须发布到仓库,子才能找到
子pom.xml开头加入:
<parent>
<groupId>mymaven</groupId>
<!-- 父类模块名 -->
<artifactId>parent-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 父pom.xml的相对路径,相对于此pom.xml的路径 -->
<relativePath>../pom.xml</relativePath>
</parent>
方法2:新建一个Mavne项目,可以是简单Maven项目,在跟目录下新建pom.xml,如:
/parent-mavne/pom.xml,加入通用代码
子pom.xml开头加入:
<parent>
<groupId>mymaven</groupId>
<!-- 父类模块名 -->
<artifactId>parent-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 父pom.xml的相对路径,相对于此pom.xml的路径 -->
<relativePath>../parent-maven/pom.xml</relativePath>
</parent>
relativePath的默认值为:../pom.xml,不管有没有值,寻找父pom.xml的顺序为:
1.先在../pom.xml寻找
2.再在仓库中寻找
3.再在relativePath的值寻找
依赖继承的管理:父pom.xml文件加入通用依赖
dependencyManagement标签并不会使用管理的依赖
<dependencyManagement>
<dependencies>
<dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.4</version>
</dependency>
<!-- ..其他依赖.. -->
........
</dependency>
</dependencies>
</dependencyManagement>
子pom.xml需要继承哪个依赖,除了版本,其他都要写。(写了版本的依赖表示自己的不是从父继承来的)
<dependencies>
<dependency>
<!-- 只继承mysql,不写版本 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- ..其他依赖.. -->
........
</dependency>
</dependencies>
2.mavne可被继承的pom元素
groupId :项目组 ID ,项目坐标的核心元素;
version :项目版本,项目坐标的核心元素;
description :项目的描述信息;
organization :项目的组织信息;
inceptionYear :项目的创始年份;
url :项目的 url 地址
develoers :项目的开发者信息;
contributors :项目的贡献者信息;
distributionManagerment :项目的部署信息;
issueManagement :缺陷跟踪系统信息;
ciManagement :项目的持续继承信息;
scm :项目的版本控制信息;
mailingListserv :项目的邮件列表信息;
properties :自定义的 Maven 属性;
dependencies :项目的依赖配置;
dependencyManagement :醒目的依赖管理配置;
repositories :项目的仓库配置;
build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;
reporting :包括项目的报告输出目录配置、报告插件配置等。
3.dependencyManagement和pluginManagement:都是间接继承,父类并不会真正使用解析里面的内容,当子类写入groupId和artifactId才会真正继承
九.Maven的聚合和继承,一般都使用方法二(聚合和继承可以放在一个pom.xml中,如:/parent-mavne/pom.xml)
最新推荐文章于 2023-12-20 19:08:11 发布