zfreebird

朝闻道 夕死可矣

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  18 随笔 :: 0 文章 :: 0 评论 :: 19996 阅读

在 Maven 项目中,dependencies 和 dependencyManagement 是 pom.xml 文件里用于管理依赖的重要元素,下面为你详细介绍它们的区别和用法。

1区别
1.1功能不同
dependencies:直接声明项目所需的依赖项。Maven 会根据 dependencies 中声明的依赖,将这些依赖的 JAR 文件下载到本地仓库,并在项目编译、测试、运行等阶段使用这些依赖。
dependencyManagement:主要用于对依赖项的版本进行统一管理。它本身并不会引入依赖,只是定义了依赖的版本和其他配置信息,子模块可以继承这些配置,避免在多个模块中重复声明相同依赖的版本。
1.2对依赖引入的影响不同
dependencies:一旦在 dependencies 中声明了某个依赖,该依赖就会被引入到项目中。
dependencyManagement:仅声明依赖的版本和配置信息,子模块需要显式地在 dependencies 中声明该依赖,才会将其引入项目。

2用法
2.1dependencies 的用法
在 pom.xml 文件中,dependencies 元素用于包含多个 dependency 子元素,每个 dependency 子元素代表一个具体的依赖项。示例如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.3.12.RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
在上述示例中,声明了两个依赖项:spring-boot-starter-web 和 spring-boot-starter-test。scope 元素用于指定依赖的作用范围,如 test 表示该依赖仅在测试阶段使用。
2.2dependencyManagement 的用法
dependencyManagement 元素通常用于父项目的 pom.xml 文件中,用于统一管理子模块的依赖版本。示例如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.3.12.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
在子模块的 pom.xml 文件中,只需在 dependencies 中声明依赖,无需指定版本,Maven 会使用父项目 dependencyManagement 中定义的版本。示例如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
如果子模块需要使用不同的版本,可以在子模块的 dependencies 中显式指定版本,这样会覆盖父项目 dependencyManagement 中定义的版本。示例如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.0.RELEASE</version>
</dependency>
</dependencies>

3总结
dependencies 用于直接引入项目所需的依赖项,是项目实际使用的依赖。
dependencyManagement 用于统一管理依赖的版本,避免在多个模块中重复声明相同依赖的版本,提高项目的可维护性。通过在父项目中使用 dependencyManagement,子模块可以继承依赖的版本配置,同时也可以根据需要覆盖这些配置。

posted on   zfreebird  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示