当我指定版本时,为什么maven会检查更新?

时间:2015-08-29 04:00:21

标签: maven

我无法理解,为什么maven每次构建项目时都必须检查更新。

pom具有针对每个依赖项提及的特定版本。将这些版本下载到本地存储库后,maven就可以使用该本地副本来构建项目。那么为什么我们每次构建项目时都必须检查更新,而不仅仅是使用本地副本?

一个附带问题。

在将maven工件发布到特定版本下的repo后,是否可以更改?

1 个答案:

答案 0 :(得分:0)

根据Maven,一个工件主要有两种类型 - 一个RELEASE和一个SNAPSHOT。工件的RELEASE依赖(例如:1.0.1, 2.3.0等)是真实的来源。意味着jar的1.0.1版本(比如test.jar)总是会一样的。每当产品成熟或经过一系列错误修复后,我们都会将工件发布到远程存储库。

另一方面,开发正在项目中进行,然后将其版本号指定为SNAPSHOT(例如:2.0-SNAPSHOT, 1.1-SNAPSHOT等)。

假设我们在项目pom中指定test-2.0-SNAPSHOT.jar作为依赖项。如果我们查看远程存储库(Nexus,archiva等),我们可以看到它没有保存为版本2.0-SNAPSHOT,而是将其保存为date-timestamp-buildnumber格式的工件版本,即日期时间戳该工件已构建并上传到远程仓库。 (例如:test-2.0-20150105082634.jar

因此,当开发团队每天都针对某个问题进行修复时,带有日期时间戳的更新jar将被上传到远程仓库。因此,maven必须查找SNAPSHOT工件的最新日期时间戳。 Maven通过repo中工件目录中的maven-metadata.xml文件执行此操作。

希望这能澄清您的疑问。如果您需要任何澄清,请告诉我