如何查询Maven仓库中依赖库的最新版本(支持批量)
高效获取依赖库最新版本的解决方案
我维护一个已有25年历史的老项目,采用Shell脚本而非Maven构建,所有依赖库信息记录在文本文件中,格式示例如下:
bson-5.4.0.jar; https://mvnrepository.com/artifact/org.mongodb/bson/;
部分依赖来自SourceForge、Oracle等非Maven仓库平台。
目前我通过Python脚本爬取Maven Repository页面提取版本信息,页面元素示例:
<a href="bson/5.4.0" class="vbtn release">5.4.0</a> ... <a href="bson/4.11.1" class="vbtn release">4.11.1</a> ... <a href="bson/2.14.0" class="vbtn release">2.14.0</a>
但项目包含约50个此类依赖,逐个爬取效率极低,希望找到更简便的方式,比如支持单依赖查询的REST服务(示例请求与返回如下),或支持批量查询多个依赖的服务:
单依赖查询示例请求
.../get_version?artifact=org.mongodb/bson/
单依赖查询示例返回JSON
{ "artifact": "org.mongodb/bson/", "versions": ["5.4.0", ... "4.11.1", ... "2.14.1"]}
批量依赖查询示例请求
.../get_versions?artifacts=org.mongodb/bson/;org.slf4j/slf4j-api;io.dropwizard.metrics/metrics-core
实际可用的方案
1. Maven Central官方REST API
Maven Central提供官方结构化查询接口,无需爬取页面:
- 单依赖查询:构造请求
https://search.maven.org/solrsearch/select?q=g:org.mongodb+a:bson&wt=json,其中g:对应groupId,a:对应artifactId,返回的JSON中response.docs字段包含该依赖的所有版本信息; - 批量查询:通过多条件OR组合实现,比如
q=(g:org.mongodb+a:bson)+OR+(g:org.slf4j+a:slf4j-api)&wt=json,一次性获取多个依赖的版本数据。
2. 本地Maven插件辅助
如果不想依赖外部API,可以临时编写极简pom.xml,将所有依赖按Maven格式声明,然后运行maven-dependency-plugin的versions:display-dependency-updates目标,批量检查所有依赖的最新版本,再将结果同步到项目的文本依赖文件中。
3. 第三方API服务
部分第三方平台提供更友好的批量查询能力,支持按groupId:artifactId格式批量提交依赖,返回结构化版本数据,免费额度通常足够小项目使用。
特殊依赖处理
对于SourceForge、Oracle等非Maven仓库的依赖,需使用对应平台的专属API查询版本(比如SourceForge提供项目版本查询接口),无法通过Maven相关API覆盖。
内容的提问来源于stack exchange,提问作者Michał Niklas
相关产品推荐
相关产品推荐

