聚合
多个本地Maven项目如果都要安装到本地仓库中,我们就要依次执行 install 命令,maven有一种方式可以使其多个项目只需执行一次install 命令即可全部安装至本地仓库中,这种方式就叫做聚合。
现在我们有3个maven项目 project01、project02、 project03 让它们三个聚合在一块然后安装至本地仓库。
1. 新建一个maven项目 mavenProject(使用quickstart这个模板,建立项目过程略)
2. 修改mavenProject的pom.xml 使其打包方式为pom
3. 使用modules标签管理聚合
4. 配置pom.xml加入聚合项目
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>zzq.mavenProject</groupId>
<artifactId>mavenProject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>mavenProject</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--聚合 -->
<modules>
<module>../project01</module>
<module>../project02</module>
<module>../project03</module>
</modules>
</project>
在mavenProject项目上执行install,实际上maven会执行3次install
依次对聚合的项目进行install
继承
在maven中,多个项目之间会重复使用同一个构建,我们可以将其抽出来单独作为父构建,使新项目继承此父构建。
新建一个maven项目,命名为project-parent 作为父构建 配置其pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>zzq.mavenProject</groupId>
<artifactId>project-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>project-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--抽出部分属性,作为公共部分 后期版本有变动方便维护 -->
<junit.version>3.8.1</junit.version>
</properties>
<!--定义在dependencyManagement里的构建在本项目中不会被依赖下载 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!--使用properties里定义的量 使用类似于EL表达式进行调用 -->
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
使project01项目继承此父构建,配置project01的pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>zzq.mavenProject</groupId>
<artifactId>project01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>project01</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--继承父构建 -->
<parent>
<groupId>zzq.mavenProject</groupId>
<artifactId>project-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<!--使用继承的构建 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>