如何通过API或元数据查询任意Maven构件的发布日期?
确定任意Maven构件发布日期的最佳通用方案
方案执行优先级(从高到低,覆盖所有公开/私有仓库场景)
- 第一级:优先使用对应仓库的官方查询API
如果目标构件发布在Maven Central,直接调用其官方提供的查询API,返回结果中的timestamp字段即为对应版本的发布时间,该数据由官方维护,准确性最高。 - 第二级:解析目标版本内置的构建元数据
拉取对应版本构件的pom.xml或pom.properties文件,读取其中打包时写入的构建时间字段。该方案不需要依赖仓库提供额外接口,兼容所有符合Maven仓库布局规范的公开、私有仓库,是通用性最强的方案。 - 第三级:解析版本目录的服务端时间戳兜底
如果前两个方案都无法获取到有效时间,再访问目标版本对应的仓库目录页面,适配不同Web服务器的返回格式提取文件最后修改时间即可。目前主流Maven仓库的目录页格式都可以通过规则匹配完成解析,覆盖绝大多数极端场景。
注意:不要使用maven-metadata.xml中的<lastUpdated>字段,也不要直接取用Coursier API的Versions#lastUpdated字段,二者都只记录构件最新版本的更新时间,无法对应到指定历史版本的发布日期,数据不符合需求。
场景适配建议(针对Scala Steward类依赖更新工具)
可以建立已查询构件版本的时间缓存,避免重复请求浪费资源;针对更新频率极高的依赖,可以配置批量查询规则,进一步降低请求次数。
内容的提问来源于stack exchange,提问作者Roberto Tyley
相关产品推荐
相关产品推荐

