maven:“-U,--updatesnapshots”真正做什么?
在命令行帮助中,我看到maven“检查”更新:maven:“-U,--updatesnapshots”真正做什么?,maven,Maven,在命令行帮助中,我看到maven“检查”更新: -U,--update-snapshots Forces a check for updated releases and snapshots on remote repositories 然而,关于堆栈溢出的大多数问题都意味着这个选项会迫使Maven更新。这
-U,--update-snapshots Forces a check for updated
releases and snapshots on remote
repositories
然而,关于堆栈溢出的大多数问题都意味着这个选项会迫使Maven更新。这是否意味着它会强制重新下载依赖项
e、 g.如果您不使用
-U
,maven可能会缓存结果-即使以前找不到依赖项(例如,因为您的nexus[或类似产品]不可用、配置错误、不包含依赖项[尚未]或其他原因)。快照版本的jar也会以类似方式缓存
如果是这样的话。Maven遵循存储库的更新策略
,该策略告诉它Maven检查依赖项是否已更新(对于快照)或是否已可用(对于已发布版本)的频率。默认值为daily
,因此,如果临时错误导致maven不下载依赖项,maven可能需要一天时间才能重试-U
覆盖该值,并告诉它立即检查
-U
如果快照依赖项已经下载并且校验和相同,则不会重新下载它它只检查校验和
更新:正如@Stas指出的,如果校验和不同,它将重新下载本地JAR,并使用远程存储库中的JAR覆盖本地JAR
**-U
如果指定“版本”范围,还将检查“更新的”版本
顺便说一句:Maven使用与依赖项+“.lastUpdated”
名称相同的时间戳文件,以了解上次在哪个服务器上检查依赖项的时间。例如,~/.m2/repository/org/springframework/spring-webmvc/3.1.2.RELEASE/spring-webmvc-3.1.2.RELEASE.jar.lastUpdated
updatePolicy的示例:
<repositories>
<repository>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
<!-- ... -->
</repository>
<!-- ... -->
</repositories>
假的
总是
真的
从未
有关更新策略的更多信息,请参阅。需要补充的是,执行
mvn-U
将用远程快照jar覆盖本地快照jar
如果没有-U
参数,本地快照将不会被覆盖。何时获取was
缓存在本地存储库中,在spring里程碑的更新间隔结束或强制更新之前,不会重新尝试解析
在这种情况下,您必须使用
mvn clean package-U
我的解释对您有帮助吗?是的,它解释了它已完成。为了加快速度,我想切换到使用mvn-U更新我们的本地回购协议,而不是在每次构建之前删除我们的m2回购协议。我能相信这不会改变我们构建的行为吗?它不会更新整个本地m2 repo,但会强制检查项目使用的那些maven依赖项是否有任何更新。顺便说一句:这只适用于快照依赖项——已发布的maven工件在发布后不应更改maven可能会缓存结果
what种类/类型的结果?您的项目所依赖的依赖项对于maven 2.2.1 Java 1.7_171_64,mvn-U仅更新快照,不更新版本(即版本:a.b.c),除了参考文档之外。所以对于这种情况,这个答案是错误的。同意maven 2.2.1,mvn-U不更新版本,只更新快照。这是错误的!正如已在接受的回答中提到的那样,-U
将对其进行更新,但在更新策略设置指定此类更新时。为了防止本地快照工件被远程快照工件覆盖,必须指定-o以完全不下载任何内容。