Maven工程的继承和聚合
2023-12-23 20:01:36
1 Maven工程继承关系
1.1 继承的概念
在Maven中,继承指Maven项目之间配置信息的继承,其中一个项目从另一个项目继承配置信息,这样多个项目可以统一配置信息,简化对项目配置的管理和维护。
1.2 继承的作用
- 统一管理依赖
通常情况下,Maven多模块项目会统一继承一个父工程模块,在父工程中统一管理项目依赖信息,如依赖的jar包、jar包的版本、jdk版本、编译打包插件等。 - 统一依赖版本
版本号由父工程统一管理,在子项目中可以只需要引入依赖的GA信息即可。
1.3 继承的语法
- 父工程
<groupId>com.giser</groupId>
<artifactId>giser-java</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 父工程打包方式为pom,用于管理子工程 -->
<packaging>pom</packaging>
- 子工程
<!-- 使用parent标签指定当前工程的父工程坐标信息 -->
<parent>
<artifactId>giser-java</artifactId>
<groupId>com.giser</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!--
子工程坐标:
由于子工程和父工程的groupId和artifactId一致,则可以省略不写
-->
<artifactId>giser-java-common</artifactId>
<packaging>jar</packaging>
1.4 依赖统一管理
使用父工程统一管理依赖信息。
- 在父工程中,使用dependencyManagement标签声明管理的依赖信息
<properties>
<spring.version>6.1.2</spring.version>
</properties>
<!-- 被管理的依赖并没有真正被引入到工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
- 在子工程中,使用父工程中声明的依赖信息
此时在子工程中无需指定版本号,具体版本号由父工程中管理的依赖版本号决定。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
</dependencies>
2 Maven工程聚合关系
2.1 聚合的概念
Maven聚合是指将多个项目组织到一个父级项目中,以便一起构建和管理的机制。聚合可以帮助我们更好地管理一组相关的子项目,同时简化它们的构建和部署过程。
2.2 聚合的作用
- 统一管理多个子项目
通过聚合,可以将多个子项目组织在一起,方便管理和维护。 - 统一构建和发布多个子项目
通过聚合,可以在一个命令中构建和发布多个相关的项目,简化了部署和维护工作。 - 优化项目构建顺序
- 统一管理依赖信息
通过聚合,由父工程统一管理公共依赖项和插件,避免重复定义。
2.3 聚合的语法
在父工程中,通过modules标签标识聚合项目。
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.giser</groupId>
<artifactId>giser-java</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>giser-java-common</module>
</modules>
</project>
2.4 聚合项目构建
可以通过构建父工程,来统一构建其聚合的所有子模块。
文章来源:https://blog.csdn.net/SUNBOYmxbsH/article/details/135172093
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!