Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程

ops/2025/2/1 23:45:04/

一、问题描述
在使用 Maven 管理项目依赖时,遇到了一个棘手的问题。具体表现为:在 pom.xml 文件中导入了所需的依赖,并且在 IDE 中导入语句没有显示为红色(表示 IDE 没有提示依赖缺失),但是在实际使用这些依赖的代码中,却显示该依赖不存在。尝试了多种常规的解决办法,例如使用 mvn clean install 命令重新构建项目、在 IDE 中刷新 Maven 项目(如在 IntelliJ IDEA 中点击 Reload All Maven Projects 按钮,在 Eclipse 中右键点击项目选择 Maven -> Update Project),检查依赖的版本号和导入语句是否正确等,都未能解决问题。

二、最终解决办法

经过一番探索,发现当 pom.xml 中使用了 <dependencyManagement> 元素管理依赖时,出现了问题。虽然不会爆红且源中存在所需的依赖,但本地仓库中无法正确找到该依赖。最终采取的解决办法是:将最外围的 <dependencyManagement></dependencyManagement> 标签去掉,然后刷新项目。这样做之后,问题得到解决,依赖能够正常找到和下载。

build后没有报Cannot resolve symbol 'baomidou' Maven 的错误了。之前我的这个依赖在dependencyManagement 中。

三、dependencyManagement 和 dependencies 的区别

dependencies 元素

  • 功能:用于声明项目直接依赖的库。这些依赖是项目运行或构建所必需的,会被添加到项目的类路径中。
  • 特点:
    • 直接在 dependencies 中添加的依赖会自动被引入到项目中,并且可以指定依赖的范围(如 compiletestruntime 等)。
    • 当多个子模块继承父模块时,父模块 dependencies 中的依赖会自动传递给子模块,子模块可以直接使用。
    • 示例:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.6</version></dependency>
</dependencies>

dependencyManagement 元素

  • 功能:主要用于集中管理依赖的版本,不会直接引入依赖,而是在子模块或其他依赖该项目的项目中,当需要引入依赖时,根据 dependencyManagement 中指定的版本信息进行统一管理,避免版本冲突。
  • 特点:
    • 通常在父模块中使用,通过 <dependencyManagement> 声明依赖的版本信息,但不会自动添加这些依赖到项目中
    • 子模块或其他项目可以通过添加 <dependency> 元素(仅指定 groupId 和 artifactId)来引入这些依赖,会自动使用 dependencyManagement 中定义的版本,这样可以确保多个模块使用相同的依赖版本。
<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.6</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>


http://www.ppmy.cn/ops/154888.html

相关文章

deepseek R1的确不错,特别是深度思考模式

deepseek R1的确不错&#xff0c;特别是深度思考模式&#xff0c;每次都能自我反省改进。比如我让 它写文案&#xff1a; 【赛博朋克版程序员新春密码——2025我们来破局】 亲爱的代码骑士们&#xff1a; 当CtrlS的肌肉记忆遇上抢票插件&#xff0c;当Spring Boot的…

【PyTorch】6.张量形状操作:在深度学习的 “魔方” 里,玩转张量形状

目录 1. reshape 函数的用法 2. transpose 和 permute 函数的使用 4. squeeze 和 unsqueeze 函数的用法 5. 小节 个人主页&#xff1a;Icomi 专栏地址&#xff1a;PyTorch入门 在深度学习蓬勃发展的当下&#xff0c;PyTorch 是不可或缺的工具。它作为强大的深度学习框架&am…

三星手机人脸识别解锁需要点击一下电源键,能够不用点击直接解锁吗

三星手机的人脸识别解锁功能默认需要滑动或点击屏幕来解锁。这是为了增强安全性&#xff0c;防止误解锁的情况。如果希望在检测到人脸后直接进入主界面&#xff0c;可以通过以下设置调整&#xff1a; 打开设置&#xff1a; 进入三星手机的【设置】应用。 进入生物识别和安全&a…

快速生成2D卡通人物的AI工具:开启Live2D角色创作的新时代

在数字内容创作领域,特别是游戏和动画行业中,Live2D技术已经成为了创建生动、互动性强的角色的热门选择。它允许创作者构建出不仅外观吸引人,而且还能通过简单的动作和表情变化与用户互动的角色。然而,传统上,Live2D角色的创建过程复杂且耗时,需要专业的美术设计师和技术…

【C语言】static关键字的三种用法

【C语言】static关键字的三种用法 C语言中的static关键字是一个存储类说明符&#xff0c;它可以用来修饰变量和函数。static关键字的主要作用是控制变量或函数的生命周期和可见性。以下是static关键字的一些主要用法和含义&#xff1a; 局部静态变量&#xff1a; 当static修饰…

私有包上传maven私有仓库nexus-2.9.2

一、上传 二、获取相应文件 三、最后修改自己的pom文件

【Docker】Docker入门了解

文章目录 Docker 全面指南&#xff1a;从入门到实战**一、Docker 核心概念****二、Docker 优势****三、安装 Docker****四、基础操作命令****五、Dockerfile 实战&#xff08;C 示例&#xff09;****六、进阶应用场景****七、常见问题解答****八、学习资源推荐** Docker 全面指…

Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException

文章目录 Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException: The message is 1,048,576 bytes when serialized which is larger than the maximum request size.1. 错误解析2. 错误原因3. 错误复现案例3.1 生产者发送超大消息 4. 解决方案4.1 方法 1&…