文章目录
1、maven聚合模块
聚合模块为项目目录的最顶层,其他模块作为聚合模块子目录而存在。目的是为一次构建多个项目模块。
项目结构如下:
通常聚合的模块可以理解为为父工程,下面的模块为子模块。
聚合模块(父工程)作用1:父工程是一个pom工程,通常只是用来帮助其子模块构建的工具,本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写。所有的子模块都继承于父模块,父模块用来做整个项目的版本控制,也就是项目中所有要使用到的jar包的版本都集中由父工程管理。这样你在写其他工程pom文件中maven依赖时就不需要写版本号了。
通常一个大的项目会将项目分成多个模块,比如上图,各个子模块之间不会有依赖关系,但是他们之间却有很多共性的东西,比如说很多类似的配置、很多类似的 jar包等等,这时候父项目和子项目的优势就能体现出来了。我们知道maven父项目和子项目的pom.xml是有继承关系的,也就是说各个模块相同的部 分,我们可以配置到父项目的pom.xml文件中,这样子项目中的pom.xml只放自己个性的东西就可以了,这大大减少了工作量。另外,在编译和打包等 其他阶段,都可以统一在父项目中来进行,maven会自动操作其中的子项目,提高了效率。如下图所示:
在父模块的pom文件中引入两个子模块:、
<modules>
<module>Model1</module>
<module>Model2</module>
</modules>
此时Model1和Model2为ParentProject的子模块,此时Model1和Model2会继承ParentProject中pom.xml文件的配置。
2、pom继承
pom继承是为了抽出重复配置,通常配置在父模块中,为子模块提供使用,这样可以做到“一处声明,处处使用”。
此时Model1、Model2、Model3的pom文件继承与Parent。
常用的pom被继承的元素:
groupId :项目组 ID ,项目坐标的核心元素;
version :项目版本,项目坐标的核心元素;
description :项目的描述信息;
properties :自定义的 Maven 属性;
dependencies :项目的依赖配置;
dependencyManagement :醒目的依赖管理配置;
repositories :项目的仓库配置;
build :包括项目的源码目录配置、输出目录配置、插件配置、插件管理配置等;
具体pom.xml文件配置参考下文:
https://blog.csdn.net/u012152619/article/details/51485297
如下:
父工程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>com.sohu.train</groupId>
<artifactId>maven-aggregate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 子模块 -->
<modules>
<module>../maven-01</module>
<module>../maven-02</module>
<module>../maven-03</module>
</modules>
<!-- 统一配置构件的版本号 -->
<properties>
<junit.version>3.8.1</junit.version>
</properties>
<!-- 依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子工程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>
<!-- 指定父pom的坐标及pom位置 -->
<parent>
<groupId>com.sohu.train</groupId>
<artifactId>maven-aggregate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../maven-aggregate/pom.xml</relativePath>
</parent>
<artifactId>maven-03</artifactId>
<packaging>jar</packaging>
<!-- 添加对junit依赖,这样公用配置只需要在maven-aggregate中去配置 -->
因为在父工程中添加同一依赖,这一部分可以不要。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>