使用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条答案
按热度按时间f5emj3cl16#
您需要从存储库中删除所有“_maven.repositories”文件。
f87krz0w17#
如果您使用的是Eclipse,那么转到Windows->Preferences->Maven并取消选中“不要自动更新远程存储库中的依赖项”复选框。
这也适用于Maven 3。
qlfbtfca18#
这个错误有时会产生误导。你可能需要检查两件事:
1.回购中的依赖项是否有实际的JAR?您的错误消息包含搜索位置的URL,因此请转到此处,然后浏览到与您的依赖项匹配的文件夹。有jar吗?如果不是,则需要更改依赖项。(例如,当您应该指向子项目时,您可以指向顶级父依赖项)
1.如果远程Repo上存在JAR,则只需删除您的本地副本。它将位于您的主目录中(除非您进行了不同的配置),位于.m2/store(ls-a,如果在Linux上则显示隐藏)下。
kulphzqa19#
在从本地maven存储库中删除相关依赖项后,此操作将起作用
eivgtgni20#
根据设置reference:
**updatePolicy:**此元素指定应该尝试进行更新的频率。Maven会将本地POM的时间戳(存储在存储库的maven元数据文件中)与远程POM进行比较。选项包括:Always、Daily(默认)、Interval:X(其中X为分钟整数)或Never。
示例:
1qczuiv021#
虽然您可以像@Sanjeev-Gulgani用
mvn -U clean install
建议的那样,通过全新安装(覆盖任何缓存的依赖项)来解决这个问题您还可以简单地删除导致问题的缓存依赖项
有关详细信息,请参阅mvn docs。
k97glaaz22#
我有一个相关的问题,但拉古拉姆的回答有帮助。(我还没有足够的声誉来支持他的答案)。我正在使用与NetBeans捆绑在一起的Maven,并收到相同的错误:“...已缓存在本地存储库中,解析将不会重试,直到nexus的更新间隔已过或强制更新->[Help 1]”。
为了解决这个问题,我在我的设置文件(C:\Program Files\NetBeans 7.0\Java\maven\conf\settings.xml)中添加了
<updatePolicy>always</updatePolicy>
nwwlzxa723#
您可以在本地存储库中删除相应的失败构件目录。你也可以简单地在球门中使用
-U
。它会完成这项工作的。这适用于maven 3,所以不需要降级到maven 2。lskq00tm24#
基本上发生的是,根据Maven.Maven的默认更新策略。Maven将每天从repo中获取jar。因此,如果在第一次尝试期间您的互联网不工作,那么它不会再次尝试获取这个jar,直到24小时过去。
解决方案:
要么使用
其中-U将强制更新回购
或使用
在settings.xml中