maven - 专家:`-U,-update-snapshots`到底做什么?

标签 maven

在命令行帮助中,我看到maven“检查”了更新:

-U,--update-snapshots                  Forces a check for updated
                                       releases and snapshots on remote
                                       repositories


但是,有关堆栈溢出的大多数问题都暗示此选项会强制Maven更新。这是否意味着它会强制重新下载依赖项?

例如https://stackoverflow.com/a/9697970/1119779

最佳答案

如果您不使用-U,则maven可能会缓存结果-即使找不到依赖项(例如,由于您的联系[或类似名称]不可用,配置错误,不包含依赖项[尚未]或其他)。

如果是这样的话。 Maven遵循存储库的updatePolicy,它告诉它maven多久(如果有的话)检查依赖项是否已更新。默认值为daily,因此,如果临时错误导致maven不下载依赖项,则可能需要一天时间才能再次尝试。 -U覆盖它,并告诉它立即检查。

如果已下载-U依赖项,并且校验和相同,则不会重新下载该依赖项!它仅检查校验和。

更新:如@Stas所指出的,如果校验和不同,它将重新下载并用来自远程存储库的本地JAR覆盖您的本地JAR。

顺便说一句: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>


有关updatePolicy的更多信息,请参见http://maven.apache.org/pom.html#Repositories

关于maven - 专家:`-U,-update-snapshots`到底做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020716/

相关文章:

java - 有什么方法可以使用 Maven 插件在 Android Studio 中禁用 javadoc 崩溃吗?

maven - 如何从命令行禁用maven-assembly-plugin插件?

java - Maven/SpringData/Neo4J : add Gremlin 1. 4

java - 将 Java Lombok 集成到 Bitbucket 管道中

java - 应用服务器集成到开发流程中

java - 未在 distributionManagement 元素内的 POM 或 -DaltDep loymentRepository=id::layout::url 参数中指定存储库元素

java - 使用Windows任务计划程序自动执行WAR文件

java - 多模块项目中的 Maven 兄弟依赖问题

google-app-engine - Appengine 框架未运行

java - Mac OSX 上 Java 10 辅助启动器的替代方案是什么?