解决Maven的pom.xml找不到依赖jar包版本的报错(dependencyManagement的作用)

2023-10-30

问题来源

今天直接使用了他人的pom.xml文件发现有部分依赖jar包出现找不到的情况。查了很多网上的解决办法都不能解决。pom.xml中显示报错的是依赖包的版本找不到,像这样:
在这里插入图片描述

问题分析

我打开本地库发现其中有相应的依赖包,但是没有需要的版本。出现该问题的原因是因为pom.xml的< dependencies>标签的外一层使用了< dependencyManagement >标签。

原因

这里就需要首先了解一下< dependencyManagement >标签的作用了。

在Maven中,< dependencyManagement >`标签提供了一种统一管理依赖版本号的方式。通常用在项目的最顶层的父POM中。

使用< dependencyManagement >`标签定义好依赖的版本号,能让所有子项目中的pom.xml不需要显示地声明版本号。当子项目中没有声明版本号,Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement 标签的项目,然后就使用该标签中指定的版本号。
例如在父项目的pom.xml中进行如下定义:

<!-- 统一管理jar包版本 -->
  <properties>
    <mysql.version>5.1.47</mysql.version>
  </properties>
  
 <dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
    </dependencies>
</dependencyManagement>

在子模块或子项目中,就可以不写版本号了:

   <dependencies>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
      </dependency>
    </dependencies>

这样做的好处是如果多个子项目都引用了同一个依赖,就可以避免多次声明版本号。另外如果需要更改版本号,就直接在父项目的pom.xml中更改就可以了,而不需要一个个项目的修改。
注意点:

  1. 如果子项目中声明了版本号,那么会使用子项目中指定的版本。
  2. 如果不在子项目中声明依赖,是不会从父项目中继承下来的。只有在子项目中写了该依赖项,并且没有指定具体版本号时,才会从父项目中继承该依赖项。其中version和scope都都取自pom

最后需要注意的是dependencyManagement中只是声明依赖,而不实现引入。所以在声明前,应该确保对应版本的依赖已经下载到了本地仓库。

解决

所以解决上面的版本号的问题就是,先去掉dependencyManagement标签,让Maven自动下载声明的要引入的依赖,下载完成后再加上这个dependencyManagement标签就可以了。

其他情况的解决方案:https://blog.csdn.net/weixin_44532540/article/details/89672344

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决Maven的pom.xml找不到依赖jar包版本的报错(dependencyManagement的作用) 的相关文章

  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • org.apache.hadoop.security.AccessControlException:客户端无法通过以下方式进行身份验证:[TOKEN,KERBEROS] 问题

    我正在使用 java 客户端通过 Kerberos 身份验证安全访问 HDFS 我尝试打字klist在服务器上 它显示已经存在的有效票证 我收到的异常是客户端无法通过以下方式进行身份验证 TOKEN KERBEROS 帮助将不胜感激 这是一
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 【Shell牛客刷题系列】SHELL15 去掉不需要的单词:总结awk命令中的内置函数

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 本文首先总结了awk命令中的各个内置函数的用法 然
  • 【VC】【全局修改windows系统环境变量】 实现和原理详解

    文章目录 导读 开发环境 实现 通过procexp打开1836进程的环境变量列表 修改注册表 手动 编码实现 广播WM SETTINGCHANGE消息 再次通过procexp打开1836进程的环境变量列表 也可以通过 系统属性 gt 环境变
  • 数据和C学习

    第三章 数据和C 3 1 示例程序 include
  • Linux:冯诺伊曼体系结构

    文章目录 冯诺依曼 主板 显卡 外设 数据流的流向 操作系统OS 系统调用接口和库函数 参考 全文约 1600 字 阅读时长预计 5分钟 冯诺依曼 我们所认识的计算机 都是有一个个的硬件组件组成 冯 诺依曼结构的核心思想 一 确定了 计算机
  • Nginx教程(小白必看,看了必会,不看血亏),

    Notice 测试请打开浏览器禁止缓存 Notice 再使用前 请打开浏览器 F12 然后网络 然后点禁用缓存 避免nginx配置后磁盘缓存的情况 而且 请确认host没问题 备注 你本地设置的host对服务器反向代理后的就没用了 一 介绍
  • 还没毕业,我就进了HR的黑名单!

    今天小红书上的一则热搜 原文求助如下 马赛克的地方是之前的实习单位 这封邮件是发到我的工作邮箱 工作邮箱写在了简历里 因为最近一直在投简历 所以给我发邮箱的人应该是hr 不是什么恶作剧 现在正在疯狂找工作 所以看到这个邮件太害怕了 实在是不
  • idea无法创建servlet

    问题引入 new里面没有servlet项目 自己创建后也无法继承HttpServlet类 整篇代码爆红参考如下博客 IntelliJ IDEA关于 cannot resolve symbol servlet 的解决 进阶中的非主流坛子的博客
  • 2020美赛C题翻译

    翻译 问题C 数据的财富 在其创建的在线市场中 亚马逊为客户提供了对购买进行评分和评价的机会 个人评级 称为 星级 使购买者可以使用1 低评级 低满意度 到5 高评级 高满意度 的等级来表示他们对产品的满意度 此外 客户可以提交基于文本的消
  • JAVA基础之理解JNI原理及应用

    java 以其跨平台的特性深受人们喜爱 而又正由于它的跨平台的目的 使得它和本地机器的各种内部联系变得很少 约束了它的功能 解决JAVA对本地操作的一种方法就是JNI JAVA通过JNI调用本地方法 而本地方法是以库文件的形式存放的 在WI
  • Java 变量

    局部变量 局部变量声明在方法 构造方法或者语句块中 局部变量在方法 构造方法 或者语句块被执行的时候创建 当它们执行完成后 变量将会被销毁 访问修饰符不能用于局部变量 局部变量只在声明它的方法 构造方法或者语句块中可见 局部变量是在栈上分配
  • uml类图浅录

    uml类图 UML中类图的绘制 单个类图的绘制 类图中的成员访问属性 UML类图中类与类的几种关系 关联 代码示例解释 UML类图表示 多重性说明 依赖 代码示例解释 uml类图表示 继承 示例代码解释 UML类图表示 实现 示例代码解释
  • 加密与解密:一个简单的C语言示例

    写在前面 做大一年级的导生 碰巧一个同学问了一个C语言程序设计的题目 说是怎么都弄不对 我看了看 正好也是三年前我碰到的题目 仿佛还噙着旧日时光的泪痕 特此将题目与我的解法奉上 以祭奠那段逝去的时光 1 问题是什么 1 使用要求的方法加密
  • 苹果系统自带的计算机怎么恢复出厂设置方法,苹果电脑Mac怎么恢复出厂系统?Mac恢复出厂系统操作方法...

    Mac和Windows在恢复出厂设置这方面有着异曲同工的操作 其实mac和macbook 系列重装系统或者叫恢复出厂设置 都是一样的步骤 一样的概念 下面来看下具体重装系统 恢复出厂设置 步骤和注意事项 Mac恢复出厂系统操作方法 一 重启
  • android状态栏透明!6年菜鸟开发面试字节跳动安卓研发岗,年薪50W

    本专栏专注分享大型Bat面试知识 后续会持续更新 喜欢的话麻烦点击一个关注 面试官 组件化如何实现 组件化与插件化的差别在哪里 该怎么选型 心理分析 面试官从架构层次 了解求职者是否用过 模块化 组件化 和插件化 在过去经验有没有运用过这些
  • 参加CUDA线上训练营·(二)cuda的c++编译

    目前c 流行的编译器有cmake clang qmake xmake等 本文主要介绍如何在cmake和xmake中编译cuda xmake 简介 xmake是国人开发的一款编译器 官方链接如下 xmake官网 该编译器安装方便 上手快 支持
  • Since & Due to & Because of & Because 的用法和区别

    Since Due to Because of Because 的用法和区别 其实以上4者都有表示因为的意思 但却有用法上的差别 Because Because 因为 表示直接的原因或理由 着重点在从句 从句是句子的主要部分用于回答why
  • springboot集成ES实现磁盘文件全文检索

    有个朋友咨询如何实现对海量磁盘资料进行目录 文件名及文件正文进行搜索 要求实现简单高效 维护方便 成本低廉 我想了想利用ES来实现文档的索引及搜索是适当的选择 于是就着手写了一些代码来实现 下面就将设计思路及实现方法作以介绍 整体架构 考虑
  • 消融实验(Ablation experiment)是什么?

    最近读论文遇到消融实验 Ablation experiment 这个概念 在论文 Deep Snake for Real Time Instance Segmentatione 中5 2 Ablation studies 消融实验类似于 控
  • 韦东山板子编译内核问题解决

    执行 make 100ask imx6ul qemu defconfig时出现错误 Can t find default configuration arch arm configs 100ask imx6ul qemu 解决方法 先检查环
  • 解决Maven的pom.xml找不到依赖jar包版本的报错(dependencyManagement的作用)

    问题来源 今天直接使用了他人的pom xml文件发现有部分依赖jar包出现找不到的情况 查了很多网上的解决办法都不能解决 pom xml中显示报错的是依赖包的版本找不到 像这样 问题分析 我打开本地库发现其中有相应的依赖包 但是没有需要的版