使用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条答案
按热度按时间at0kjp5o1#
如果您使用Nexus作为代理回购,则它会使用缺省值1440分钟(或24小时)的“Not Found Cache TTL”设置。降低此值可能会有所帮助(存储库>配置>过期设置)。
有关详细信息,请参阅documentation。
yjghlzjz2#
确保您正在寻找的构件存在,如果它在您的本地项目运行中:cd..CD项目名称MVN全新安装
那么你会在当地吃到它。
要获得更好的实践,请执行以下操作:MVN干净部署,这样您就可以再次使用它,而不会出现此问题
oug3syen3#
我解决了!
我早些时候遇到过这个问题,在查看了一些评论后,它起到了作用。我们只需更正{m2_home}/.m2下的settings.xml文件
并执行maven干净安装命令。
0vvn1miw4#
更改我的settings.xml中的本地存储库路径解决了这个问题
3mpgtkmj5#
我在我的私人存储库上传第三方库时遇到了同样的问题。有时描述的修复方法对我有效,但有时不起作用。
我认为问题的根本原因是缺少构件的pom.xml文件。(第三方构件的pom.xml不是项目中的pom.xml)。我假设Maven希望每个构件都有一个pom.xml,这样它就可以解析所有构件的依赖关系。有时它在没有pom.xml的情况下可以工作,但有时不能(我还没有确定,但它不能)。
我使用Nexus3作为私有存储库。当您上传一个构件时,您可以选中一个选项来为该构件生成pom.xml文件。
uqcuzwp86#
我有这个问题,this中提出的全面描述帮助我解决了它。
第二个公开的问题是我的问题。我使用了我刚刚添加的第三方存储库,在我的项目中执行pom文件的
repository
部分。我将相同的存储库信息添加到pluginrepository
中以解决此问题。9ceoxa927#
我也犯了同样的错误,(不会重新尝试解决问题...)但我有不同的要求,因为我在本地存储库中有文件,目前无法远程访问(旧的过时的库和内部库),我的公司Nexus系统停机,但它们确实存在于我的.m2repos中。
Maven仍然拒绝构建,并产生了上面相同的错误。
对于有问题的库,我只删除了相应的文件:
_emote.repositories
示例路径:USERS[用户名].m2[违规JAR路径][版本号]_emote.respositories
知道这些文件仅在本地可用。
注意:长期解决方案是,我可能应该启动并运行我们以前的节点系统,对于那些遗留的JAR,将它们签入到lib文件夹(或类似的文件夹)下的项目中。
brccelvz8#
有点相关..我得到的是
“[错误]无法对项目执行目标测试项目:无法解析项目的依赖项myjarname:jar:1.0-0:无法在本地存储库中找到
http://repo1.maven.org/maven2
中的myjarname-core:Bundle:1.0-0,在中心的更新间隔过去或强制更新之前,不会重试解析->[Help 1]”此错误是由于意外使用
Maven 3
而不是Maven 2
造成的。我只是想这可能会节省一些人的时间,因为我最初的谷歌搜索将我带到了这个页面。yks3o0rb9#
在我的例子中,解决方案很愚蠢:我只是有不正确的依赖项版本。
vuv7lop310#
Maven有更新策略设置,用于指定检查存储库中更新的频率或使存储库与远程保持同步。
下面的代码示例可以添加到maven用户设置文件中以配置updatPolicy。
fcg9iug311#
最后回答标题问题:它在(项目、个人资料或设置)中(客户端设置)
..。标签。
(目前,maven:3.6.0,但我认为“向后”兼容)可能的值为:
此标记的当前(Maven 3.6.0)评估实现如下:
..带有:
...其中
lastModified
是一个/每个底层构件的(本地文件)“修改时间戳”。尤其是对于
interval:x
设置::
并不严格--任何“非空”字符都可以这样做(=
、``等)。x < 0
应让位于“永不”。interval:0
我认为是“每分钟”(0-59秒。或以上...)间隔时间。24 * 60
分钟(~“每天”)。..请参阅:DefaultUpdatePolicyAnalyzer、DefaultMetadataResolver#solveMetadata()和RepositoryPolicy
7hiiyaii12#
我是怎么遇到这个问题的,
当我从Eclipse Juno更改为露娜,并从SVN repo checkout 我的maven项目时,我在构建应用程序时遇到了同样的问题。
我都试了些什么?我尝试清理本地存储库,然后使用-U选项再次更新所有版本。但我的问题还在继续。
然后,我转到窗口-->首选项->Maven-->用户设置-->并单击本地存储库下的Reindex按钮,等待重新索引发生。
仅此而已,问题解决了。
t3psigkw13#
我过去常常通过删除本地repo中相应的失败下载构件目录来解决这个问题。下次运行maven命令时,将再次触发构件下载。因此,我会说这是一个客户端设置。
Nexus端(服务器回购端),配置计划任务解决了这个问题。客户端,这是使用
-U
完成的,正如您已经指出的。vsaztqbk14#
对于IntelliJ用户,以下方法对我有效:
右键单击您的包
和
zzwlnbp815#
我对另一件艺术品也犯了类似的错误。
已在本地存储库中缓存,在已过中心的更新间隔或强制更新之前,将不会重试解析.
上面描述的解决方案对我来说都不起作用。我最终在IntelliJ Idea中通过文件>无效缓存/重新启动...>无效并重新启动解决了这个问题。