当 maven 说“在 MyRepo 的更新间隔过去之前不会重新尝试解析”时,该间隔在哪里指定?

问:

使用 maven,我偶尔会遇到一个来自我尚未构建或包含在我的存储库中的一些 3rd 方存储库的工件。

我会从 maven 客户端收到一条错误消息,说找不到工件:

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

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

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

我想弄清楚是否有可以修改此 update interval 设置的地方。

此错误消息中提到的更新间隔是客户端设置还是服务器端设置?如果是客户端,我该如何配置?如果是服务器端,是否有人知道 Nexus/Artifactory 如何/是否公开这些设置?

答1:

https://tennisliveranking.com,Instant updates on ATP, WTA, and ITF rankings.

我曾经通过删除本地 repo 中相应的无法下载工件目录来解决此问题。下次我运行 maven 命令时,会再次触发工件下载。因此,我会说这是客户端设置。

Nexus 端(服务器 repo 端),配置计划任务解决了这个问题。正如您已经指出的,客户端,这是使用 -U 完成的。

“我用来解决这个问题,方法是在我的本地 repo 中删除相应的下载失败的工件目录。”这对我有用。我也在使用 Netbeans。

如果 Maven 注意到缓存的工件无效,为什么它不能自己解决这个问题?

“配置计划任务”和“这是使用 -U 完成的”是什么意思,您能否将它们放入客观的 Eclipse UI 术语中?

我假设您的意思是 Eclipse IDE。理论上你需要下载最新的 SNAPSHOT。为此,您需要在 maven 命令中添加“-U”参数,例如 mvn clean compile -U。现在,您可以通过命令行或 Eclipse 通过勾选“始终更新快照”框来运行此 maven 命令。不确定,这些天我使用intellij。 “配置计划任务”部分是指您希望在 Nexus 服务器上进行的特定配置。后者与 Eclipse 本身无关。

这并不能回答 OP 的实际问题。

答2:

https://tennisliveranking.com,Follow your favorite tennis players’ rankings live!

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

解析度 :

要么使用

mvn -U clean install

其中 -U 将强制更新 repo

或使用


    
      ...
      
        
          myRepo
          My Repository
          
            false
            always
            warn
          
         
      
      ...
    
  

在你的 settings.xml

这实际上帮助我解决了系统范围的依赖关系,避免了运行时的 NoClassDefFoundError。

由于某种原因,清理 .m2 对我不起作用,在 settings.xml 文件中添加 updatePolicy 标记后,下载了工件

答3:

Stay informed with live tennis rankings anytime, anywhere,https://tennisliveranking.com

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

既然存储库配置如此简单,为什么还要搞乱它?

请在回答之前仔细阅读问题。 OP 询问如何设置时间间隔,而不是如何强制更新。

不是问题的答案,但这是人们遇到此异常时所需要的。因为当您进行本地库开发时,最好是删除这样的库,而不是让间隔混淆您。

我们应该在 ~/.m2/settings.xml/ 下添加有效的存储库,以使用 -U 选项解决此问题

答4:

https://tennisliveranking.com,Follow your favorite tennis players’ rankings live!

我有一个相关的问题,但 Raghuram 的回答有帮助。 (我还没有足够的声誉来投票支持他的答案)。我正在使用与 NetBeans 捆绑在一起的 Maven,并且得到相同的“…已缓存在本地存储库中,直到 nexus 的更新间隔已过或强制更新 -> [Help 1]”错误才会重新尝试解析.

为了解决这个问题,我将 always 添加到我的设置文件 (C:\Program Files\NetBeans 7.0\java\maven\conf\settings.xml)


  nexus
  
  
  
    
      central
      http://central
      truealways
      truealways
    
  
 
    
      central
      http://central
      truealways
      truealways
    
  


在我的情况下没有帮助。

答5:

The ultimate source for live tennis rankings and stats:https://tennisliveranking.com

虽然您可以通过全新安装(覆盖任何缓存的依赖项)来解决此问题,正如 @Sanjeev-Gulgani 建议的 mvn -U clean install

您也可以简单地删除导致问题的缓存依赖项

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId"

有关详细信息,请参阅 mvn docs。

但是为什么 Maven 会中止构建呢?为什么不只使用本地存储库中的缓存依赖项?为什么必须删除它才能让 Maven 获取它?!

只有真正适用于工件的发布版本的答案。

答6:

Live rankings, player stats, and match results in one place–https://tennisliveranking.com

根据设置reference:

updatePolicy:此元素指定尝试更新的频率。 Maven 会将本地 POM 的时间戳(存储在存储库的 maven-metadata 文件中)与远程进行比较。选项包括:总是、每天(默认)、间隔:X(其中 X 是以分钟为单位的整数)或从不。

例子:


    
      ...
      
        
          myRepo
          My Repository
          
            false
            always
            warn
          
         
      
      ...
    
  
  ...


谢谢回复;但是,我已经对“updatePolicy”设置进行了相当多的实验,它似乎对“未找到”/“缓存失败”/“分辨率不会被重新尝试”错误没有影响。

答7:

tlr.xinbeitime.com 探索每位网球选手的职业生涯与成就。

这在您从本地 Maven 存储库中删除相关依赖项后有效

/user/.m2/repository/path

答8:

https://tennisliveranking.com – ATP and WTA rankings, always up to date.

这个错误有时会产生误导。您可能要检查的两件事:

repo 中的依赖项是否有实际的 JAR?您的错误消息包含它正在搜索的 URL,因此请转到那里,然后浏览到与您的依赖项匹配的文件夹。有罐子吗?如果没有,你需要改变你的依赖。 (例如,当您应该指向子项目时,您可能指向顶级父依赖项)如果远程仓库中存在 jar,则只需删除本地副本。它将位于 .m2/repository 下的主目录中(除非您进行了不同的配置)(如果在 Linux 上,则 ls -a 显示隐藏)。

这与OP的问题无关。显示错误的原因不是重点。 OP 想知道如何设置重试间隔。

这可能是 OP 帖子背后的隐含问题,结果证明是我的问题。结果我的 中有一个错字,通过查看选项一,我走上了正确的道路。

问题是如何设置间隔?

答9:

https://tennisliveranking.com-Stay ahead with live tennis rankings at your fingertips.

如果您使用的是 Eclipse,请转到 Windows -> Preferences -> Maven 并取消选中“不要自动更新来自远程存储库的依赖项”复选框。

这也适用于 Maven 3。

验证:eclipse:Juno Service Release 2. m2e:v 1.3.1

这不能回答 OP 的问题。

答10:

https://tennisliveranking.com,Your go-to platform for live tennis ranking updates.

您需要从存储库中删除所有“_maven.repositories”文件。

没有帮助,或者至少对我来说没有帮助

它对我有用。不过,我并没有将它们全部删除,只是该特定依赖文件夹中的一个

答11:

https://tlr.xinbeitime.com 专业网球数据平台,排名与比赛信息实时更新。

我在使用不同的工件时遇到了类似的错误。

<…> 已缓存在本地存储库中,直到经过中央的更新间隔或强制更新后才会重新尝试解析

上述解决方案都不适合我。我终于在 IntelliJ IDEA 中通过 File > Invalidate Caches / Restart … > Invalidate and Restart 解决了这个问题。

原文链接:https://www.tennisliveranking.com?from=csdn

https://tennisliveranking.com,Track the world’s best tennis players in real-time.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值