Maven本地仓库maven-metadata.xml的lastUpdated被设为未来时间原因排查
本地Maven元数据
<lastUpdated>被设为未来时间导致更新检测失效 环境信息
- Windows 10 系统
- Maven 3.9.1
- Eclipse EE 2023-03(集成m2e插件)
问题现象
使用Versions Maven Plugin检查POM的插件版本更新时,大量Maven Central上已有的更新无法被检测到,但其他同事检查同一POM时能正常显示这些更新(参考Issue #959)。
排查过程
- 执行调试命令获取Maven日志:
mvn -X versions:display-plugin-updates
部分日志输出:
… [DEBUG] Checking com.akathist.maven.plugins.launch4j:launch4j-maven-plugin for updates newer than 2.1.3 [DEBUG] Could not find metadata com.akathist.maven.plugins.launch4j:launch4j-maven-plugin/maven-metadata.xml in local (C:\Users\user\.m2\repository) [DEBUG] Skipped remote request for com.akathist.maven.plugins.launch4j:launch4j-maven-plugin/maven-metadata.xml, locally cached metadata up-to-date [DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].version=2.1.3 [DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].artifactVersion=2.1.2 [DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].effectiveVersion=2.1.3 [DEBUG] [com.akathist.maven.plugins.launch4j:launch4j-maven-plugin].specified=true …
- 对比其他同事的命令输出,他们能正常检测到更新:
com.akathist.maven.plugins.launch4j:launch4j-maven-plugin 2.1.3 -> 2.4.1
- 检查本地仓库文件细节:
- 路径
C:\Users\user\.m2\repository\com\akathist\maven\plugins\launch4j\launch4j-maven-plugin\下不存在maven-metadata.xml,仅存在maven-metadata-central.xml - 查看
maven-metadata-central.xml,其中的<lastUpdated>20210818055556</lastUpdated>经时间戳转换后对应2610年6月16日(未来时间) - 补充文件时间与校验信息:
maven-metadata-central.xml.sha1的校验值与maven-metadata-central.xml的SHA-1哈希匹配,但前者文件时间戳为2022-09-08,后者为2022-10-02,相差近一个月resolver-status.properties文件时间戳与maven-metadata-central.xml.sha1一致(2022-09-08),文件内注释显示修改时间为2022-09-08,且central.maven-metadata-central.xml.lastUpdated=1662676475074表明当天曾检查过Maven Central
- 时间关联:2022-09-08正是我将该POM的v0.8.10版本发布到Maven Central的日期,当时执行过
versions:use-releases、versions:set、versions:display-dependency-updates命令,以及使用Nexus Staging Maven Plugin。结合校验值匹配的情况,错误的<lastUpdated>值大概率是在当天被设置的。
提问
有没有人遇到过或了解,是哪个插件、Maven版本、Eclipse m2e版本,或是何种bug/场景,会导致本地Maven仓库中的元数据<lastUpdated>被设置为未来时间?
内容的提问来源于stack exchange,提问作者Garret Wilson
相关产品推荐
相关产品推荐

