Maven工程的继承和聚合

发布时间:2023年12月23日

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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。