文章目录
- dependencies标签
- dependencyManagement标签
- 两者辨析
- repositories标签
- properties标签
dependencies标签
<dependencies>
标签用于指定项目的依赖项列表。这些依赖项可以是应用程序代码所需的库,也可以是Spring Boot和其他第三方库。<dependencies>
标签内的依赖仅适用于当前模块<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.4</version></dependency><dependency><groupId>com.example</groupId><artifactId>my-library</artifactId><version>1.0.0</version></dependency> </dependencies>
<groupId>
依赖项所属的组织或公司<artifactId>
依赖项的名称<version>
依赖项的版本号
dependencyManagement标签
<dependencyManagement>
标签用于集中管理项目的依赖项版本**。在这个标签内的有依赖项及其版本,但不会实际将它们添加到项目的依赖项列表中**。- **
<dependencyManagement>
标签中的依赖项版本会被子模块继承并应用于项目的依赖项解析。确保在整个项目中使用相同的依赖项版本。**<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.5.4</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>
两者辨析
<dependencies> | <dependencyManagement> | |
---|---|---|
定义位置 | 在每个模块的 pom.xml 文件中 | 在父模块的 pom.xml 文件中 |
功能 | 指定项目的依赖项列表,并添加到依赖项解析中 | 集中管理项目的依赖项版本,不直接添加到依赖项解析中 |
作用范围 | 仅适用于当前模块 | 可以被子模块继承,确保整个项目使用相同的依赖项版本 |
版本号 | 可以在每个依赖项中指定版本号 | 通常使用一个引用(如 Spring Boot 官方引用)来指定所有依赖项的版本号 |
导入方式 | 直接将依赖项添加到项目的依赖项解析中 | 使用 <scope> 为 import 的依赖项实现版本继承 |
优点 | 灵活,可以在每个模块中定制依赖项版本 | 统一管理依赖项版本,确保一致性 |
缺点 | 需要在每个模块中重复指定依赖项版本 | 无法针对不同的子模块使用不同的依赖项版本 |
-
<dependencies>
标签用于在每个模块的pom.xml
文件中指定依赖项列表,并直接添加到依赖项解析中。它提供了灵活性,可以在每个模块中定制依赖项版本。但需要在每个模块中重复指定依赖项版本。 -
<dependencyManagement>
标签用于集中管理项目的依赖项版本,在父模块的pom.xml
文件中定义。它可以被子模块继承,确保整个项目使用相同的依赖项版本。通常使用一个引用(如Spring Boot官方引用)来指定所有依赖项的版本号,并通过<scope>
为import
的依赖项实现版本继承。
repositories标签
<repositories>
标签是用于配置项目的特殊仓库(repository)信息+指定获取项目的依赖项的地址。仓库是存储和提供依赖项的地方,例如 Maven Central Repository、JCenter等。<repositories>
标签中,列出项目所需的所有仓库,并指定URL和其他相关信息。当构建项目时,构建工具(例如Maven)会根据配置的仓库信息从相应的仓库中下载所需的依赖项。
<repositories><repository><id>central</id><name>Maven Central Repository</name><url>https://repo.maven.apache.org/maven2</url></repository><repository><id>jcenter</id><name>JCenter</name><url>https://jcenter.bintray.com</url></repository>
</repositories>
- 每个仓库由以下元素组成:
<id>
: 仓库唯一标识符(必须),用于在配置文件中引用该仓库。<name>
: 仓库名称(非必须),用于提供对仓库的描述。<url>
: 仓库URL(必须),指定从仓库获取依赖项的位置。
properties标签
<properties>
标签用于定义项目属性,这些属性可以在项目的 POM 文件中被引用。这种机制允许在 POM 文件中定义一些值,在整个 POM 文件中以及子模块的 POM 文件中重复使用这些值。
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>11</java.version><spring.version>5.3.9</spring.version>
</properties>
- 这些属性可以在 POM 文件中的任何地方被引用,如在
<dependencies>
标签中使用${java.version}
来指定依赖项的版本号。
使用 <properties>
标签的优点:
- 重用性:可以在项目中的多个地方引用同一个属性,避免在多个地方重复定义相同的值。
- 易维护性:当需要修改某个值时,只需要在
<properties>
标签中修改一次即可,而不需要在整个 POM 文件中查找并多次修改。
- 使用
<properties>
标签,更加灵活地管理项目的属性值,避免重复定义,并简化对全局属性的维护。