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 这个依赖

相关文章
|
5月前
|
人工智能 弹性计算 前端开发
使用Hermes Agent与Claude Code构建AI协同开发团队:架构、部署与实战指南
在AI驱动开发的新时代,单一AI工具已难以满足全流程研发需求。Hermes Agent作为具备自进化、长记忆、任务调度能力的智能主控,搭配Claude Code强大的代码生成、调试、测试与闭环执行能力,可形成一套类似“技术主管+资深开发工程师”的协同工作模式。前者负责需求理解、任务拆解、流程调度、经验沉淀与交互确认,后者专注高质量编码、程序调试与逻辑实现,二者结合真正实现从需求到代码的端到端闭环。
1861 2
|
2月前
|
Java Linux Docker
【2026最新】Neo4j 下载安装教程(Windows/Linux/Docker 三平台安装,零基础友好)
本文是Java开发者学习Neo4j的实战笔记,涵盖Neo4j核心概念(节点、关系、属性、路径)、Windows手动安装踩坑指南(含第三方下载验证)、Docker快速部署方案,以及SpringBoot集成要点,助力快速入门图数据库。
【2026最新】Neo4j 下载安装教程(Windows/Linux/Docker 三平台安装,零基础友好)
|
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 插件,强烈推荐!!!不容错过
|
存储 Java Maven
使用Java实现OAuth 2.0认证授权
使用Java实现OAuth 2.0认证授权
2306 0
|
NoSQL Redis Windows
windows环境启动redis-server.exe出现闪退问题解决方案(亲测有效)
windows环境启动redis-server.exe出现闪退问题解决方案(亲测有效)
2955 0
|
Java Maven
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
在执行Maven项目中的`install`命令时,遇到编译插件版本不匹配的错误。具体报错为:`maven-compiler-plugin:3.13.0`要求Maven版本至少为3.6.3。解决方案是将Maven版本升级到3.6.3或降低插件版本。本文详细介绍了如何下载、解压并配置Maven 3.6.3,包括环境变量设置和IDEA中的Maven配置,确保项目顺利编译。
18265 5
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案