升级pom.xml依赖后WAR包内Jar文件修改日期异常陈旧问题咨询
为什么升级Maven依赖后lib里的Jar修改日期仍较旧?
这其实是Maven依赖管理的正常行为,核心原因和Maven的本地仓库机制直接相关:
- Jar文件的修改日期来自本地仓库:当你在pom.xml里升级依赖版本后,Maven会先检查本地仓库(默认路径是
~/.m2/repository)是否存在该新版本的Jar。如果本地已经有这个Jar(比如之前其他项目下载过,或是你本次升级时刚从远程仓库拉取),它会直接把本地仓库里的Jar原样拷贝到项目的lib目录(或是打包WAR时直接从本地仓库读取)。而本地仓库里的Jar的修改日期,是它第一次被下载到本地仓库的时间,并非你这次修改pom的时间。 - WAR文件的日期是打包时刻的时间:WAR是Maven在你执行
mvn package(或类似打包命令)时生成的归档文件,它的修改日期就是你执行打包操作的当前时间,所以自然会比从本地仓库拷贝来的Jar日期新很多。
举个实际场景:假设你今天把com.example:demo:1.0.0升级到1.0.1,但这个1.0.1版本的Jar其实是上个月就发布到Maven中央仓库了,你上周在另一个项目里已经下载过它到本地仓库。那这次Maven直接复用本地仓库里的旧日期Jar,lib目录里的Jar修改日期自然会早于今天生成的WAR。
你可以去本地仓库对应的依赖路径里找到这个Jar,对比它和项目lib里Jar的修改日期,会发现两者完全一致,这就能验证这个逻辑。
内容的提问来源于stack exchange,提问作者pouyan021
相关产品推荐
相关产品推荐

