Maven进阶

发布于:2025-02-10 ⋅ 阅读:(44) ⋅ 点赞:(0)

在 Maven 中实现继承关系的步骤如下:

  1. 创建父工程:首先,你需要创建一个父工程,这个工程的 pom.xml 文件将定义所有子工程共享的配置。在父工程的 pom.xml 文件中,你需要设置 <packaging> 标签为 pom,这表明这是一个父工程。

  2. 继承 Spring Boot Starter Parent:在父工程的 pom.xml 文件中,你需要添加对 spring-boot-starter-parent 的继承。这可以通过在 <parent> 标签中指定 spring-boot-starter-parentgroupId, artifactId, 和 version 来实现。例如:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version> <!-- 使用适当的版本号 -->
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  1. 在子工程中配置继承关系:每个子工程的 pom.xml 文件都应该在 <parent> 标签中指定父工程的 groupIdartifactId, 和 version。这样,子工程就会继承父工程的配置。例如:
<parent>
    <groupId>com.yourcompany</groupId>
    <artifactId>your-parent-project</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>
  1. 在父工程中配置共有依赖:在父工程的 pom.xml 文件中,你可以定义所有子工程共享的依赖。这些依赖可以放在 <dependencies> 标签中,子工程可以不重复定义这些依赖,而是通过继承来使用它们。

  2. 管理依赖版本:为了进一步管理依赖的版本,你可以在父工程的 pom.xml 文件中使用 <dependencyManagement> 标签来指定依赖的版本,这样所有子工程中的相同依赖都会使用这个版本。

  3. 模块化:如果项目很大,你可以将项目分成多个模块,每个模块都有自己的 pom.xml 文件。在父工程的 pom.xml 文件中,你可以使用 <modules> 标签来列出所有的模块。


Maven 项目中,子工程配置继承关系后,有以下几点需要注意:

  1. 省略 groupId:在子工程中配置了继承关系之后,可以省略 <parent> 标签中的 groupId,因为 Maven 会自动从父工程继承这些信息。

  2. relativePath 的使用:在 <parent> 标签中,<relativePath> 用于指定父工程 pom.xml 文件的相对位置。如果不指定 <relativePath>,Maven 会默认从本地仓库或远程仓库中查找父工程的 pom.xml 文件。

  3. 依赖版本的冲突:如果父子工程都配置了同一个依赖的不同版本,Maven 会以子工程中指定的版本为准。这是 Maven 处理依赖冲突的基本原则,即路径最短者优先。


在 Maven 项目中,<dependencyManagement><dependencies> 标签用于管理项目依赖,但它们的作用和目的有所不同:

  1. <dependencies>:这个标签用于声明项目直接依赖的库。当你在项目的 pom.xml 文件中添加 <dependencies> 部分时,你实际上是在告诉 Maven 你的项目需要哪些外部库,并且通常会指定每个依赖的版本号。如果一个父工程中定义了 <dependencies>,那么这些依赖会直接被子工程继承。

  2. <dependencyManagement>:这个标签用于管理项目依赖的版本。它允许你在一个中心位置(通常是父工程)定义所有子工程共享的依赖版本,而不需要在每个子工程中重复这些信息。子工程可以通过 <dependencyManagement> 来避免指定依赖的版本号,因为版本已经在父工程中统一管理了。但是,仅仅在 <dependencyManagement> 中声明依赖并不足以使项目编译或运行,因为 <dependencyManagement> 并不直接引入依赖。子工程必须显式地在 <dependencies> 中声明需要的依赖,这样 Maven 就会使用在 <dependencyManagement> 中指定的版本。


私服