maven:“-U,--updatesnapshots”真正做什么?

maven:“-U,--updatesnapshots”真正做什么?,maven,Maven,在命令行帮助中,我看到maven“检查”更新: -U,--update-snapshots Forces a check for updated releases and snapshots on remote repositories 然而,关于堆栈溢出的大多数问题都意味着这个选项会迫使Maven更新。这

在命令行帮助中,我看到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以完全不下载任何内容。