Maven快照究竟是什么,为什么我们需要它?
我对Maven快照的含义以及为什么我们要构建一个有点困惑?
Maven中的快照版本是尚未发布的版本。
这个想法是, 在 1.0
版本(或任何其他版本)完成之前,存在一个1.0-SNAPSHOT
。 该版本可能会变成1.0
。 它基本上是“ 1.0
正在开发中”。 这可能接近真正的1.0
版本,或者相当远(例如在0.9
版本之后)。
“真实”版本和快照版本之间的区别在于快照可能会得到更新。 这意味着今天下载1.0-SNAPSHOT
可能会给出与昨天或明天下载文件不同的文件。
通常,快照依赖性应该只在开发期间存在,并且没有发布的版本(即,没有非快照)应该对快照版本有依赖性。
其他三个答案为您提供了一个关于什么是-SNAPSHOT
版本的良好愿景。 我只是想在Maven找到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/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
版本将作为稳定库进行处理。 (可以在这里找到settings.xml的模型)
“SNAPSHOT”术语表示构建是给定时间代码的快照。
通常意味着该版本仍处于重大发展阶段。
当需要发布代码时,您需要更改pom中列出的版本。 因此,不要使用“SNAPSHOT”,而要使用“1.0”。
有关版本控制的一些帮助,请查看语义版本控制规范。
链接地址: http://www.djcxy.com/p/44077.html上一篇: What exactly is a Maven Snapshot and why do we need it?