当前位置: 首页 > article >正文

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

一、问题描述
在使用 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.kler.cn/a/513511.html

相关文章:

  • P8738 [蓝桥杯 2020 国 C] 天干地支
  • PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10
  • [德州扑克]
  • Golang的文件处理优化策略
  • 代码随想录_字符串
  • 数学基础 --线性代数之理解矩阵乘法
  • 55.命名、驼峰式、帕斯卡式 C#例子
  • MySQL表创建分区键
  • 37.构造回文字符串问题|Marscode AI刷题
  • PHP语言的网络编程
  • 深度学习 · 手撕 DeepLearning4J ,用Java实现手写数字识别 (附UI效果展示)
  • 【BUUCTF】[RCTF2015]EasySQL1
  • AT9880U-B-F8N-23北斗多频导航芯片车规级数据手册
  • Docker入门学习
  • cf<contest/1950>练习-python版
  • Django学习笔记(安装和环境配置)-01
  • 元素周期表
  • jvm学习总结
  • Spark SQL中的from_json函数详解
  • mac 配置 python 环境变量
  • 2023年12月GESP C++ 六级认证真题——工作沟通
  • Android SystemUI——快捷面板的显示(十五)
  • Kimi k1.5:月之暗面再突破,多模态推理能力比肩 OpenAI o1
  • C++知识框架
  • 除了基本的事件绑定,鸿蒙的ArkUI
  • H3CNE-18-Telnet远程控制