在 Maven 中实现继承关系的步骤如下:
创建父工程:首先,你需要创建一个父工程,这个工程的
pom.xml
文件将定义所有子工程共享的配置。在父工程的pom.xml
文件中,你需要设置<packaging>
标签为pom
,这表明这是一个父工程。继承 Spring Boot Starter Parent:在父工程的
pom.xml
文件中,你需要添加对spring-boot-starter-parent
的继承。这可以通过在<parent>
标签中指定spring-boot-starter-parent
的groupId
,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>
- 在子工程中配置继承关系:每个子工程的
pom.xml
文件都应该在<parent>
标签中指定父工程的groupId
,artifactId
, 和version
。这样,子工程就会继承父工程的配置。例如:
<parent>
<groupId>com.yourcompany</groupId>
<artifactId>your-parent-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
在父工程中配置共有依赖:在父工程的
pom.xml
文件中,你可以定义所有子工程共享的依赖。这些依赖可以放在<dependencies>
标签中,子工程可以不重复定义这些依赖,而是通过继承来使用它们。管理依赖版本:为了进一步管理依赖的版本,你可以在父工程的
pom.xml
文件中使用<dependencyManagement>
标签来指定依赖的版本,这样所有子工程中的相同依赖都会使用这个版本。模块化:如果项目很大,你可以将项目分成多个模块,每个模块都有自己的
pom.xml
文件。在父工程的pom.xml
文件中,你可以使用<modules>
标签来列出所有的模块。
Maven 项目中,子工程配置继承关系后,有以下几点需要注意:
省略 groupId:在子工程中配置了继承关系之后,可以省略
<parent>
标签中的groupId
,因为 Maven 会自动从父工程继承这些信息。relativePath 的使用:在
<parent>
标签中,<relativePath>
用于指定父工程pom.xml
文件的相对位置。如果不指定<relativePath>
,Maven 会默认从本地仓库或远程仓库中查找父工程的pom.xml
文件。依赖版本的冲突:如果父子工程都配置了同一个依赖的不同版本,Maven 会以子工程中指定的版本为准。这是 Maven 处理依赖冲突的基本原则,即路径最短者优先。
在 Maven 项目中,<dependencyManagement>
和 <dependencies>
标签用于管理项目依赖,但它们的作用和目的有所不同:
<dependencies>:这个标签用于声明项目直接依赖的库。当你在项目的
pom.xml
文件中添加<dependencies>
部分时,你实际上是在告诉 Maven 你的项目需要哪些外部库,并且通常会指定每个依赖的版本号。如果一个父工程中定义了<dependencies>
,那么这些依赖会直接被子工程继承。<dependencyManagement>:这个标签用于管理项目依赖的版本。它允许你在一个中心位置(通常是父工程)定义所有子工程共享的依赖版本,而不需要在每个子工程中重复这些信息。子工程可以通过
<dependencyManagement>
来避免指定依赖的版本号,因为版本已经在父工程中统一管理了。但是,仅仅在<dependencyManagement>
中声明依赖并不足以使项目编译或运行,因为<dependencyManagement>
并不直接引入依赖。子工程必须显式地在<dependencies>
中声明需要的依赖,这样 Maven 就会使用在<dependencyManagement>
中指定的版本。
私服