Maven 中的快照版本尚未发布。
这个想法是在 1.0
版本(或任何其他版本)完成之前,存在1.0-SNAPSHOT
。那个版本可能会变成 1.0
。它基本上是 “ 1.0
正在开发中”。这可能接近真正的1.0
版本,或者相当远(例如,在0.9
版本之后)。
“真实” 版本和快照版本之间的区别在于快照可能会获得更新。这意味着今天下载1.0-SNAPSHOT
可能会提供与昨天或明天下载不同的文件。
通常,快照依赖项应该仅在开发期间存在,并且没有发布的版本(即没有非快照)应该依赖于快照版本。
另外三个答案为您提供了-SNAPSHOT
版本的良好愿景。我只想在发现SNAPSHOT
依赖关系时添加一些关于 Maven 行为的信息。
构建应用程序时,Maven 将在本地存储库中搜索依赖项。如果在那里找不到稳定版本,它将搜索远程存储库(在settings.xml
或pom.xml
定义)以检索此依赖项。然后,它会将其复制到本地存储库,以使其可用于下一个版本。
例如, foo-1.0.jar
库被认为是一个稳定版本,如果 Maven 在本地存储库中找到它,它将使用这个库进行当前构建。
现在,如果你需要一个foo-1.0-SNAPSHOT.jar
库,Maven 会知道这个版本不稳定并且可能会有变化。这就是 Maven 将尝试在远程存储库中找到更新版本的原因,即使在本地存储库中找到了此库的一个版本。但是,此检查每天只进行一次。这意味着如果您在本地存储库中有一个foo-1.0-20110506.110000-1.jar
(即此库已在 2011/05/0611: foo-1.0-20110506.110000-1.jar
生成),并且如果您再次运行 Maven 构建,同一天,Maven 不会检查存储库是否有更新的版本。
Maven 为您提供了一种可以在存储库定义中更改此更新策略的方法:
<repository>
<id>foo-repository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>XXX</updatePolicy>
</snapshots>
</repository>
XXX
可以是:
SNAPSHOT
版本将作为稳定库处理。 “SNAPSHOT” 术语表示构建是给定时间代码的快照。
这通常意味着该版本仍处于重大发展阶段。
当代码准备好并且是时候释放它时,您将需要更改 POM 中列出的版本。然后,您将使用像 “1.0” 这样的标签而不是 “SNAPSHOT”。
有关版本控制的一些帮助,请查看语义版本控制规范 。