协慌网

登录 贡献 社区

当 maven 说 “直到 MyRepo 的更新间隔过去时,才会重新尝试解决问题”,该间隔在哪里指定?

使用 Maven 时,我偶尔会碰到一些我尚未构建或未包含在我的存储库中的第三方存储库中的工件。

我将从 Maven 客户端收到一条错误消息,提示找不到工件:

http://myrepo:80/artifactory/repo中找到 org.jfrog.maven.annomojo:maven-plugin-anno:jar:1.4.0 缓存在本地存储库中,直到更新间隔才会重新尝试解析已用完 MyRepo 或强制进行了更新 -> [帮助 1]

现在,了解了这意味着什么,并且可以简单地使用-U重新运行我的命令,并且从此以后一切正常。

但是,我发现此错误消息非常不直观,并且正试图让我的同事感到头疼。

我试图弄清楚是否可以修改此update interval设置。

  1. 此错误消息中提到的update interval是客户端设置还是服务器端设置?
  2. 如果是客户端,该如何配置?
  3. 如果是服务器端,是否有人知道 Nexus / Artifactory 如何 / 是否公开这些设置?

答案

我曾经通过删除本地存储库中相应的未能下载的工件目录来解决此问题。下次我运行 maven 命令时,将再次触发工件下载。因此,我想说这是一个客户端设置。

在 Nexus 端(服务器回购端),此问题已通过配置计划任务解决。客户端,正如您已经指出的那样,这是使用-U

您可以在本地存储库中删除相应的失败工件目录。而且,您也可以简单地在目标中-U它将完成工作。这适用于 Maven3。因此无需降级到 Maven 2。

基本上发生的是,根据 maven 的默认 updatePolicy。Maven 每天都会从回购中获取 jar。因此,如果在第一次尝试期间您的互联网无法正常工作,那么它将花费 24 小时才尝试再次获取此 jar。

解析度 :

无论使用

mvn -U clean install

-U 将强制更新存储库

或使用

<profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>myRepo</id>
          <name>My Repository</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
          </releases>
         </repository>
      </repositories>
      ...
    </profile>
  </profiles>

在您的 settings.xml 中