IDEA查看Jar包是由哪个依赖引入的、查找maven依赖关系,找到某个maven依赖所在的pom

简介: 本文揭秘了Spring Boot项目中`org.apache.http.client`类(如`RequestConfig`)虽未显式引入`httpclient`依赖却能正常使用的原因——实为`spring-boot-starter-data-elasticsearch`等starter通过多层传递依赖间接引入。借助IDEA的Maven Helper插件或Maven视图的依赖分析功能,可快速定位嵌套来源,高效解决“类存在但依赖缺失”的困惑。(239字)

1 背景

今天想写一个 HttpUtils 工具类,为了偷懒,就把其他项目的 HttpUtils 给抄过来了,但是抄过来之后就发现,代码大片飘红,缺少依赖。所以我就好奇,HttpUtils 中的类都是来源于哪个依赖。而且我在旧项目中的 pom.xml 中搜了,找不到任何 http 相关的依赖

image-20260603164511165

比如上图我选中的这些类,都是在 org.apache.http.client 包下,点进 RequestConfig 类

image-20260603164802894

可以轻易知道它是来源于 httpclient-4.5.14.jar ,这个 jar包对应的依赖明显是

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.14</version>
</dependency>

可问题是,我旧项目中明明没有引入这个依赖,为什么能使用 org.apache.http.client.config.RequestConfig 类呢?

我知道,肯定是 pom.xml 文件中引入了某个依赖,然后这个依赖又嵌套引入了 httpclient 这个依赖,那这个源头依赖是哪个?怎么才能快速找到它呢?

2 idea查找maven依赖关系

2.1 使用Maven Helper 插件

下图是我的 pom.xml 文件

image-20260603165629362

Dependency Analyzer

image-20260603165720099

点进去之后如下图所示:

image-20260603165920646

  • All Dependencies as Tree :把所有依赖排列成树结构。上图展示的就是 pom.xml 文件中引入的所有依赖,注意:pom.xml 中引入了 10 个依赖,那么上图就会展示 10 个依赖,至于依赖中嵌套的依赖,需要展开树才能展示
  • All Dependencies as Tree :把所有依赖以列表形式展示,也就是说,pom.xml 中引入的依赖和嵌套的依赖,都会集中展示

image-20260603170426895

上图中可以看到,spring-boot-starter-data-elasticsearch 这个依赖中又嵌套引入了 3 个依赖

image-20260603170636303

回到问题本身,我就想知道我的 HttpUtils 工具类中的 org.apache.http.client 中的类,是来源于我 pom.xml 文件的哪个依赖

image-20260603170813182

就拿 RequestConfig 类来说,我已经知道它是来源于 httpclient-4.5.14.jar 这个 jar 包,那这个 jar 包又是从 pom.xml 中的哪个依赖引进来的?

image-20260603171215044

在 Dependency Analyzer 中直接搜索 httpclient ,如上图所示

  • 右边显示它是来源于 elasticsearch-rest-client 这个依赖,
  • 但是 elasticsearch-rest-client 又是来源于 spring-data-elasticsearch 这个依赖,
  • 而 spring-data-elasticsearch 又是来源于 spring-boot-starter-data-elasticsearch 这个依赖,而它就是我们在 pom.xml 中引入的依赖。

所以: org.apache.http.client 中的类是来源于 pom.xml 文件中的 spring-boot-starter-data-elasticsearch 这个依赖

2.2 maven 直接搜

idea 右侧 → maven → 搜索框

image-20260603172104920

点击之后如下图所示:

image-20260603172313608

  • kxy-common :工程名字,可以选,毕竟每个工程下依赖都会不同
  • Resolved Dependencies:表示已解析到的依赖,也就是 kxy-common 这个工程下解析得到的所有依赖,包括嵌套的依赖
  • 选中第一个依赖,右边展示的是它的树结果,最顶层是 kxy-common ,表示它是 kxy-common 这个工程下的,是由 spring-boot-starter-test 这个依赖嵌套引入的

image-20260603173254166

回到正题,搜一下 httpclient ,实际上搜 httpcli 就能搜到,右边可以看到,它是由 spring-boot-starter-data-elasticsearch 嵌套引入的。而且还不是直接嵌套,而是多层嵌套

image-20260603173556173

在 maven 中的 Dependencies 中可以看到,确实是打开多层嵌套,才能找到 httpclient 这个依赖

相关文章
|
4月前
|
人工智能 小程序 程序员
Skill详解(2万字详细教程),Skills是什么,如何安装并使用Skills
AI时代必备技能!Skills(智能体技能)是Anthropic提出的可复用能力包,以文件夹形式封装指令、脚本与资源,实现“按需加载”,大幅节省Token。它让大模型从聊天工具升级为专业助手——非技术岗也能零代码快速上手,真正实现人人可用、岗岗必备。
29626 24
Skill详解(2万字详细教程),Skills是什么,如何安装并使用Skills
|
5月前
|
人工智能 弹性计算 前端开发
使用Hermes Agent与Claude Code构建AI协同开发团队:架构、部署与实战指南
在AI驱动开发的新时代,单一AI工具已难以满足全流程研发需求。Hermes Agent作为具备自进化、长记忆、任务调度能力的智能主控,搭配Claude Code强大的代码生成、调试、测试与闭环执行能力,可形成一套类似“技术主管+资深开发工程师”的协同工作模式。前者负责需求理解、任务拆解、流程调度、经验沉淀与交互确认,后者专注高质量编码、程序调试与逻辑实现,二者结合真正实现从需求到代码的端到端闭环。
1828 2
|
2月前
|
Java Linux Docker
【2026最新】Neo4j 下载安装教程(Windows/Linux/Docker 三平台安装,零基础友好)
本文是Java开发者学习Neo4j的实战笔记,涵盖Neo4j核心概念(节点、关系、属性、路径)、Windows手动安装踩坑指南(含第三方下载验证)、Docker快速部署方案,以及SpringBoot集成要点,助力快速入门图数据库。
【2026最新】Neo4j 下载安装教程(Windows/Linux/Docker 三平台安装,零基础友好)
|
5月前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
5341 26
|
4月前
|
SQL Kubernetes Java
六款好用的 IDEA 插件,强烈推荐!!!不容错过
本文介绍IntelliJ IDEA高效开发必备配置与插件:①禁用启动自动打开项目、②配置Maven路径、③自定义类/枚举模板(含作者、日期注释)、④调整编辑器字体;推荐6大实用插件——GenerateAllSetter(一键生成带默认值的setter)、Save Actions X(保存时自动格式化/清理无用导入)、Mybatis X(Mapper-XML双向跳转)、Mybatis Log Free(免费打印完整SQL)、Spring Boot Assistant(YAML智能补全)、Kubernetes(K8s资源文件语法提示与模板生成)。
六款好用的 IDEA 插件,强烈推荐!!!不容错过