我对Maven Snapshot的含义以及我们为什么要构建它感到有点困惑。
发布于 2011-05-06 00:57:40
Maven中的快照版本是尚未发布的版本。
这个想法是,在一个1.0版本(或任何其他版本)完成之前,存在一个1.0-SNAPSHOT。这个版本可能会变成1.0。它基本上是“开发中的1.0”。这可能接近于真正的1.0发行版,也可能相当遥远(例如,在0.9发行版之后)。
“真实”版本和快照版本之间的区别在于,快照可能会得到更新。这意味着今天下载1.0-SNAPSHOT可能会得到一个不同于昨天或明天下载的文件。
通常,快照依赖关系应该在开发过程中只存在,并且没有发布版本(即没有非快照)应该依赖于快照版本。
发布于 2011-05-06 14:41:10
其他三个答案让您很好地了解了什么是-SNAPSHOT版本。我只是想添加一些有关Maven在发现SNAPSHOT依赖项时的行为的信息。
当您构建应用程序时,Maven将在本地存储库中搜索依赖项。如果在那里找不到稳定的版本,它将搜索远程存储库(在settings.xml或pom.xml中定义)以检索此依赖项。然后,它会将其复制到本地存储库中,以使其可用于下一次构建。
例如,一个foo-1.0.jar库被认为是一个稳定的版本,如果它在本地存储库中找到它,它将在当前构建中使用这个版本。
现在,如果您需要一个foo-1.0-SNAPSHOT.jar库,Maven会知道这个版本并不稳定,可能会发生变化。这就是为什么Maven会尝试在远程存储库中查找较新的版本,即使在本地存储库中找到了该库的版本。但是,这种检查每天只进行一次。这意味着如果您的本地存储库中有一个foo-1.0-20110506.110000-1.jar (即这个库是在2011/05/06 11:00:00生成的),并且如果您在同一天再次运行Maven构建,那么Maven将不会检查存储库是否有更新的版本。
Maven为您提供了一种在存储库定义中更改此更新策略的方法:
<repository>
<id>foo-repository</id>
<url>...</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>XXX</updatePolicy>
</snapshots>
</repository>其中XXX可以是:
SNAPSHOT版本将作为稳定的库进行处理。(可以在here)上找到settings.xml的型号
发布于 2011-05-06 00:55:03
“快照”这个术语意味着构建是在给定时间内代码的快照。
这通常意味着这个版本仍在大力开发中。
当代码准备就绪,是时候发布它时,您将希望更改POM中列出的版本。然后,你可以使用"1.0“这样的标签,而不是”快照“。
有关版本控制的一些帮助,请查看Semantic Versioning specification。
https://stackoverflow.com/questions/5901378
复制相似问题