如何通过Maven或Artifactory查找指定依赖包的所有引用?
查询引用superlibary.jar的项目的两种方案
方案一:通过Artifactory内置功能查询(推荐)
这是最高效的方案,无需拉取项目源码,直接基于Artifactory存储的构建信息搜索:
- 第一步先确认superlibary.jar对应的Maven坐标,包括
groupId、artifactId、version,如果坐标信息不明确,可以先在Artifactory仓库中搜索该jar包,进入详情页即可查看完整坐标。 - 第二步使用Artifactory的依赖搜索功能:
- 7.x及以上版本的Artifactory可直接进入全局搜索页面,切换到「依赖」标签,依次输入对应的
groupId、artifactId以及需要查询的版本,点击搜索后即可得到所有引入该依赖的构建产物记录,对应的关联项目即为引用了该jar的项目。 - 若内部项目发布时均已配置上传构建信息到Artifactory,还可以切换到「构建搜索」标签,按依赖维度筛选,可直接得到对应项目的名称、分支、发布版本等更详细的信息。
- 7.x及以上版本的Artifactory可直接进入全局搜索页面,切换到「依赖」标签,依次输入对应的
- 如果需要批量导出全量结果,可使用Artifactory AQL查询语法,在AQL控制台执行如下语句即可:
items.find( { "@dependencies.groupId": "替换为superlibary的groupId", "@dependencies.artifactId": "替换为superlibary的artifactId", "@dependencies.version": "替换为需要查询的版本号" } ).include("@dependencies", "name", "path", "modified")
方案二:通过Maven批量遍历查询
如果你的Artifactory未开启构建信息收集功能,可通过Maven批量拉取项目查询:
- 提前将所有存储在Artifactory的内部应用源码拉取到本地同一个根目录下。
- 编写批量遍历脚本,依次进入每个项目的根目录,执行如下命令:
mvn dependency:tree -Dincludes=替换为superlibary的groupId:替换为artifactId -Dmaven.test.skip=true - 若命令执行后有输出内容,说明该项目存在对superlibary.jar的依赖(包含直接依赖和间接依赖),汇总所有有输出的项目即可得到完整清单。
注意:两种方案均可以命中直接依赖和间接引入superlibary.jar的项目,无需额外适配。
内容的提问来源于stack exchange,提问作者Mr Smith
相关产品推荐
相关产品推荐

