使用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
是客户端设置还是服务器端设置?
1.如果是客户端,如何配置?
1.如果是服务器端,有人知道Nexus/ArtiFactory如何/是否公开这些设置吗?
24条答案
按热度按时间t3psigkw1#
我过去常常通过删除本地repo中相应的失败下载构件目录来解决这个问题。下次运行maven命令时,将再次触发构件下载。因此,我会说这是一个客户端设置。
Nexus端(服务器回购端),配置计划任务解决了这个问题。客户端,这是使用
-U
完成的,正如您已经指出的。lskq00tm2#
基本上发生的是,根据Maven.Maven的默认更新策略。Maven将每天从repo中获取jar。因此,如果在第一次尝试期间您的互联网不工作,那么它不会再次尝试获取这个jar,直到24小时过去。
解决方案:
要么使用
其中-U将强制更新回购
或使用
在settings.xml中
nwwlzxa73#
您可以在本地存储库中删除相应的失败构件目录。你也可以简单地在球门中使用
-U
。它会完成这项工作的。这适用于maven 3,所以不需要降级到maven 2。k97glaaz4#
我有一个相关的问题,但拉古拉姆的回答有帮助。(我还没有足够的声誉来支持他的答案)。我正在使用与NetBeans捆绑在一起的Maven,并收到相同的错误:“...已缓存在本地存储库中,解析将不会重试,直到nexus的更新间隔已过或强制更新->[Help 1]”。
为了解决这个问题,我在我的设置文件(C:\Program Files\NetBeans 7.0\Java\maven\conf\settings.xml)中添加了
<updatePolicy>always</updatePolicy>
1qczuiv05#
虽然您可以像@Sanjeev-Gulgani用
mvn -U clean install
建议的那样,通过全新安装(覆盖任何缓存的依赖项)来解决这个问题您还可以简单地删除导致问题的缓存依赖项
有关详细信息,请参阅mvn docs。
eivgtgni6#
根据设置reference:
**updatePolicy:**此元素指定应该尝试进行更新的频率。Maven会将本地POM的时间戳(存储在存储库的maven元数据文件中)与远程POM进行比较。选项包括:Always、Daily(默认)、Interval:X(其中X为分钟整数)或Never。
示例:
kulphzqa7#
在从本地maven存储库中删除相关依赖项后,此操作将起作用
qlfbtfca8#
这个错误有时会产生误导。你可能需要检查两件事:
1.回购中的依赖项是否有实际的JAR?您的错误消息包含搜索位置的URL,因此请转到此处,然后浏览到与您的依赖项匹配的文件夹。有jar吗?如果不是,则需要更改依赖项。(例如,当您应该指向子项目时,您可以指向顶级父依赖项)
1.如果远程Repo上存在JAR,则只需删除您的本地副本。它将位于您的主目录中(除非您进行了不同的配置),位于.m2/store(ls-a,如果在Linux上则显示隐藏)下。
f87krz0w9#
如果您使用的是Eclipse,那么转到Windows->Preferences->Maven并取消选中“不要自动更新远程存储库中的依赖项”复选框。
这也适用于Maven 3。
f5emj3cl10#
您需要从存储库中删除所有“_maven.repositories”文件。
zzwlnbp811#
我对另一件艺术品也犯了类似的错误。
已在本地存储库中缓存,在已过中心的更新间隔或强制更新之前,将不会重试解析.
上面描述的解决方案对我来说都不起作用。我最终在IntelliJ Idea中通过文件>无效缓存/重新启动...>无效并重新启动解决了这个问题。
vsaztqbk12#
对于IntelliJ用户,以下方法对我有效:
右键单击您的包
和
at0kjp5o13#
如果您使用Nexus作为代理回购,则它会使用缺省值1440分钟(或24小时)的“Not Found Cache TTL”设置。降低此值可能会有所帮助(存储库>配置>过期设置)。
有关详细信息,请参阅documentation。
7hiiyaii14#
我是怎么遇到这个问题的,
当我从Eclipse Juno更改为露娜,并从SVN repo checkout 我的maven项目时,我在构建应用程序时遇到了同样的问题。
我都试了些什么?我尝试清理本地存储库,然后使用-U选项再次更新所有版本。但我的问题还在继续。
然后,我转到窗口-->首选项->Maven-->用户设置-->并单击本地存储库下的Reindex按钮,等待重新索引发生。
仅此而已,问题解决了。
fcg9iug315#
最后回答标题问题:它在(项目、个人资料或设置)中(客户端设置)
..。标签。
(目前,maven:3.6.0,但我认为“向后”兼容)可能的值为:
此标记的当前(Maven 3.6.0)评估实现如下:
..带有:
...其中
lastModified
是一个/每个底层构件的(本地文件)“修改时间戳”。尤其是对于
interval:x
设置::
并不严格--任何“非空”字符都可以这样做(=
、``等)。x < 0
应让位于“永不”。interval:0
我认为是“每分钟”(0-59秒。或以上...)间隔时间。24 * 60
分钟(~“每天”)。..请参阅:DefaultUpdatePolicyAnalyzer、DefaultMetadataResolver#solveMetadata()和RepositoryPolicy