You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven从Nexus快照仓库下载旧快照而非最新版本问题

问题根因

Maven默认对SNAPSHOT快照版本启用本地缓存策略,默认缓存有效期为24小时,有效期内执行依赖拉取命令时会直接使用本地缓存的旧包,不会主动同步远程Nexus仓库的最新快照版本。

解决方案

  • 方法1:命令行添加强制更新参数(推荐临时使用)
    执行命令时追加-U(--update-snapshots的缩写)参数,强制Maven跳过本地缓存校验,直接拉取远程最新快照版本。
    修改后的完整命令如下:
mvn dependency:copy -Dartifact=${GROUP_ID}:${ARTIFACT_ID}:${VERSION}:jar:${PACKAGING} \
-DdistributionManagement.releaseRepository.repoId=${NEXUS_RELEASE_REPO_ID} \
-DdistributionManagement.snapshotRepository.repoId=${NEXUS_SNAPSHOT_REPO_ID} \
-DdistributionManagement.repository.releaseURL=${NEXUS_RELEASE_URL} \
-DdistributionManagement.repository.snapshotURL=${NEXUS_SNAPSHOT_URL} -DoutputDirectory=. \
-U
  • 方法2:修改Maven配置永久生效
    编辑Maven根目录下conf/settings.xml或用户目录下.m2/settings.xml,找到对应SNAPSHOT仓库的配置节点,修改快照更新策略为每次执行命令都检查更新:
<repository>
  <id>${NEXUS_SNAPSHOT_REPO_ID}</id>
  <url>${NEXUS_SNAPSHOT_URL}</url>
  <snapshots>
    <enabled>true</enabled>
    <!-- 核心配置:每次都检查快照更新,可选值还有daily(默认,每天检查)、interval:X(每X分钟检查)、never(从不更新) -->
    <updatePolicy>always</updatePolicy>
  </snapshots>
</repository>
  • 方法3:手动清理本地缓存
    如果上述方法无效,可以直接删除本地Maven仓库中对应SNAPSHOT包的存储目录,路径为${本地Maven仓库根目录}/${GROUP_ID目录层级}/${ARTIFACT_ID}/${VERSION}-SNAPSHOT,删除后重新执行拉取命令即可。

注意事项

需要提前确认Nexus侧的SNAPSHOT仓库已开启「允许重新部署」权限,否则新的快照包无法正常上传到Nexus,自然也拉取不到最新版本。

内容的提问来源于stack exchange,提问作者Tushar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:09:00