解决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 Batch如何作为Reader读取多个表(查询)并将其写入平面文件写入

    在我的项目中 我读取了具有不同查询的多个表 并将这些结果集合并到平面文件中 我该如何实现这一目标 我的意思是 JdbcReader 直接采用 1 个选择查询 我如何自定义它 如果 JdbcCursorItemReader 不能满足您的需求
  • JPA 实体中的方法是否允许抛出异常?

    我尝试创建的 Entity 有问题 当尝试使用 OpenJPA 实现在 Eclipse 中测试类时出现问题 我有not尝试过其他人 所以不确定它是否适用于他们 我的测试用例非常简单 因为它创建一个 EntityManagerFactory
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • java中如何围绕另一个移动对象旋转一个对象?

    我对 Java 很陌生 想要编写一个简单的太阳系统 其中月球绕地球旋转 地球绕太阳旋转 一切正常 除了月亮不想正确移动 由于地球偏离月球的初始位置 月球的自转半径会根据该距离而增大 同样 当地球接近月球惯性位置时 自转半径会减小 如果初始位
  • JSP重定向和传值

    我有一个 JSP 其中我重定向到另一个 jsp 例如 我在该jsp中没有任何其他数据 我想将值从该jsp index jsp 传递到重定向jsp login jsp 我将如何做到这一点 这里的 logonInput 是在struts con
  • x.person 上的 @OneToOne 或 @ManyToOne 引用未知实体:y.Person - 继承问题

    我的 Hibernate 架构有问题 我有一个 MappedSuperClass 人员 一名员工和一名客户 gt Person class MappedSuperclass Audited public class Person exten
  • Java 创建 Thread 实例时会发生什么

    我有一个关于 Java 线程和操作系统线程的问题 我读了Java 线程与 Pthreads https stackoverflow com questions 5269535 java threads vs pthreads and Jav
  • WSDL 表示中的枚举类型

    WSDL 表示如下
  • 在 Android 中使用 lambdaj

    有人尝试过在android开发中使用lambdaj库吗 当我创建一个简单的小型java应用程序时 它对我来说工作得很好 但我无法在android应用程序中使用它 UPDATE 我正在添加 lambdaj lambdaj 2 3 2 with
  • 在 Java 和 PHP 之间加密/解密字符串

    我使用 AES 加密来加密和解密服务器端的 php 和 Android 应用程序 作为客户端 之间的字符串 PHP 中的加密字符串为 HaxRKnMxT24kCJWUXaVvqDHahzurJQK sYA4lIHql U 在 Java 中是
  • 让 Java 与 Windows 10 Ubuntu 一起使用

    我安装了 Windows 10 周年更新 以便可以在 Windows 上的 Ubuntu 上尝试 Bash 看如何安装 http www howtogeek com 249966 how to install and use the lin
  • 如何对JConsole的密码文件的密码进行加密

    我正在使用 JConsole 访问我的应用程序 MBean 并使用 password properties 文件 但根据 Sun 的规范 该文件仅包含明文格式的密码 com sun management jmxremote password
  • 序言中不允许引用

    请帮我找到这个异常的原因 我使用以下罐子 core renderer jar itext paulo 155 jar 第一个文档 xhtml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE h
  • 如何在最短的时间内克隆java中的输入流

    有人可以告诉我如何克隆输入流 并花费尽可能少的创建时间吗 我需要多次克隆输入流以使用多种方法来处理 IS 我尝试了三种方法 但由于这样或那样的原因 事情不起作用 方法 1 感谢 stackoverflow 社区 我发现以下链接很有帮助 并将
  • java3d 中的面部着色

    使用java3d 如何不在每个顶点基础上着色 而是在每个面基础上着色 我尝试学习 java3d 但我生成的 Shape3d 看起来并不符合预期 我想用不同的颜色给不同的三角形着色 但我不知道该怎么做 纹理看起来有点大材小用 而且我根本没有掌
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 无法运行简单的 doclet 程序:包 com.sun.javadoc 不存在

    我正在尝试运行一个简单的 doclet 程序 但无法编译它 javac cp cygdrive c Progra 2 Java jdk1 8 0 65 lib tools jar A java 但它抛出 A java 1 错误 包 com
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • 当我必须在 Netty4 编码器中调用 ByteBuf.retain() 时?

    我正在编写一个以 NUL 终止 JSON 消息的编码器 以便在消息碎片的情况下可以对其进行解码 我找到了这个样本 gt click https github com netty netty blob master codec src mai
  • 如何在 SpringDoc OpenAPI 3 中引用文件?

    我有 Spring Boot 项目 我想在其中记录我的 API 这里是正在处理的 Web 服务的示例 ApiResponses value ApiResponse responseCode 200 content Content media

随机推荐

  • 【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中显示报错的是依赖包的版本找不到 像这样 问题分析 我打开本地库发现其中有相应的依赖包 但是没有需要的版