全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-23 5 分钟 ✍️ juanwangdev

快照仓库行为

SNAPSHOT 版本依赖有特殊的下载和更新机制。

SNAPSHOT 版本特点

版本标识

XML
1.0.0-SNAPSHOT
2.0.0.BUILD-SNAPSHOT

特殊行为

特性说明
不稳定内容随时变化
定时更新定期检查新版本
时间戳命名实际存储带时间戳

快照仓库配置

仓库声明

XML
<repository>
  <id>snapshots</id>
  <url>https://repo.example.com/snapshots</url>
  <snapshots>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
  </snapshots>
</repository>

典型私服配置

Bash
<repository>
  <id>nexus-snapshots</id>
  <url>https://nexus.company.com/repository/maven-snapshots/</url>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
  <releases>
    <enabled>false</enabled>
  </releases>
</repository>

updatePolicy 配置

说明适用场景
always每次构建检查开发活跃期
daily每日检查(默认)一般开发
interval:X每 X 分钟检查持续集成
never不检查更新稳定依赖

强制更新快照

XML
# 强制检查所有 SNAPSHOT 更新
mvn clean install -U

# 简写
mvn clean install --update-snapshots

-U 参数让 Maven 忽略本地缓存,重新检查远程 SNAPSHOT。

时间戳存储机制

本地仓库存储

XML
~/.m2/repository/com/example/my-lib/1.0.0-SNAPSHOT/
├── my-lib-1.0.0-20260523.140530-123.jar
├── my-lib-1.0.0-20260523.140530-123.pom
├── maven-metadata.xml
├── maven-metadata-nexus.xml
└── resolver-status.properties

maven-metadata.xml

XML
<metadata>
  <groupId>com.example</groupId>
  <artifactId>my-lib</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <versioning>
    <snapshot>
      <timestamp>20260523.140530</timestamp>
      <buildNumber>123</buildNumber>
    </snapshot>
    <lastUpdated>20260523140530</lastUpdated>
  </versioning>
</metadata>

SNAPSHOT vs RELEASE 仓库

仓库分离

Bash
<!-- 正式版仓库 -->
<repository>
  <id>releases</id>
  <url>https://nexus.company.com/releases</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>

<!-- 快照版仓库 -->
<repository>
  <id>snapshots</id>
  <url>https://nexus.company.com/snapshots</url>
  <releases>
    <enabled>false</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

行为对比

特性SNAPSHOTRELEASE
更新检查定期检查不检查
本地缓存可能过期稳定不变
下载频率按策略更新仅首次
稳定性不稳定稳定

发布 SNAPSHOT

XML
<distributionManagement>
  <snapshotRepository>
    <id>nexus-snapshots</id>
    <url>https://nexus.company.com/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>
Bash
mvn deploy

清理过期快照

配置清理策略

text
<repository>
  <id>snapshots</id>
  <snapshots>
    <enabled>true</enabled>
    <!-- Nexus 端配置清理策略 -->
  </snapshots>
</repository>

手动清理本地快照

text
rm -rf ~/.m2/repository/com/example/my-lib/1.0.0-SNAPSHOT
mvn clean install -U

要点总结

  • SNAPSHOT 版本不稳定,内容随时变化
  • 默认每日检查更新(daily)
  • -U 强制检查更新
  • 时间戳命名:版本-时间戳-构建号
  • 快照和正式版仓库通常分离
  • 不建议在生产环境使用 SNAPSHOT 依赖

📝 发现内容有误?点击此处直接编辑

← 上一篇 仓库认证与安全
下一篇 → 本地仓库与缓存机制
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库