我对Maven快照的含义以及为什么要构建一个快照感到困惑。
Maven中的快照版本尚未发布。
这个想法是,前一个1.0版本(或任何其他版本)完成后,存在一个1.0-SNAPSHOT。那个版本可能会变成 1.0。它基本上是“ 1.0开发中”。这可能接近实际1.0发行版,或相当遥远(0.9例如,发行后立即发行)。
1.0
1.0-SNAPSHOT
“真实”版本和快照版本之间的区别在于快照可能会得到更新。这意味着1.0-SNAPSHOT今天下载的文件可能不同于昨天或明天下载的文件。
通常,快照依赖关系仅应在开发期间存在,并且任何发行版本(即,非非快照)都不应依赖快照版本。
当你构建应用程序时,Maven将在本地存储库中搜索依赖项。如果在那里找不到稳定的版本,它将搜索远程存储库(在settings.xml或中定义pom.xml)以检索此依赖项。然后,它将把它复制到本地存储库中,以供以后的版本使用。
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将不会检查存储库以获得较新的版本。
foo-1.0-SNAPSHOT.jar
Maven为你提供了一种在存储库定义中更改此更新策略的方法:
<repository> <id>foo-repository</id> <url>...</url> <snapshots> <enabled>true</enabled> <updatePolicy>XXX</updatePolicy> </snapshots> </repository>
XXX可以在哪里:
XXX