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

有了maven,我偶尔会碰到一些来自某些第三方回购的工件,我还没有build立或包含在我的资源库中。

我会从maven客户端收到一条错误消息,说一个神器无法find:

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

现在, 明白这意味着什么, 可以简单地用-U重新运行我的命令,而且事情通常从那里开始工作

但是,我发现这个错误信息是非常不直观的,正试图让我的同事们头疼。

我试图找出是否有一些地方,我可以修改此update interval设置。

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

我曾经通过删除相应的失败下载工件目录在我的本地回购解决这个问题。 下一次我运行maven命令时,神器下载会再次被触发。 所以我会说这是一个客户端设置。

Nexus方面(服务器回购方),这个问题解决了configuration一个计划任务。 客户端,这是用-U完成的,正如你已经指出的那样。

您可以删除本地存储库中相应失败的工件目录。 而且你也可以简单地在目标中使用-U 。 它会做的工作。 这与maven 3一起工作。所以不需要降级到maven 2。

我有一个相关的问题,但Raghuram的答案帮助。 (我还没有足够的声望投票他的答案)。 我正在使用与NetBeans捆绑在一起的Maven,并且获得了相同的“…被caching在本地存储库中,直到nexus的更新时间间隔已经过去或者更新被强制 – > [Help 1]错误才会重新parsing分辨率。

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

 <profile> <id>nexus</id> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </pluginRepository> </pluginRepositories> </profile> 

根据设置参考 :

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

例:

 <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> 

如果您使用的是Eclipse,那么转到Windows – >首选项 – > Maven,并取消选中“不要自动更新远程存储库依赖关系”checkbox。

这也适用于Maven 3。

这个错误有时会引起误解。 2件事你可能要检查:

  1. 是否有一个真正的JAR的回购依赖? 你的错误信息包含一个URL在哪里search,所以去那里,然后浏览到与你的依赖相匹配的文件夹。 有jar子吗? 如果没有,你需要改变你的依赖。 (例如,当您应该指向一个子项目时,您可能指向顶级父依赖项)

  2. 如果该jar存在于远程仓库中,那么就删除你的本地副本。 它将在你的主目录(除非你configuration不同).m2 / repository(ls -a在Linux上显示为隐藏)。

我是如何得到这个问题的,

当我从Eclipse Juno更改为Luna,并从SVN repo检出我的Maven项目时,在构build应用程序时遇到了同样的问题。

我试过了吗? 我尝试了干净的本地存储库,然后使用-U选项再次更新所有版本。 但是我的问题仍然存在

然后我去了Window – > Preferences – > Maven – > User Settings – >,点击Local Repository下的Reindexbutton,等待reindex发生。

就这样,问题就解决了。

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

有点相关..我越来越

“[错误]无法执行项目testproject的目标:无法解决项目myjarname的依赖关系:jar:1.0-0:在http://repo1.maven.org/maven2找不到myjarname-core:bundle:1.0-0被caching在本地存储库中,直到中央的更新时间间隔已经过去或者更新被强制,分辨率才会被重新尝试 – > [Help 1]“

这个错误是由于意外地使用Maven 3而不是Maven 2 。 只是觉得它可能会节省一些时间,因为我最初的谷歌search引导我到这个页面。

如果您使用Nexus作为代理repo,则它具有“Not Found Cache TTL”设置,默认值为1440分钟(或24小时)。 降低此值可能会有所帮助(存储库>configuration>到期设置)。

请参阅文档了解更多信息。

在Eclipse中:

  • 右键单击Project – > Run As – > Maven Build – >将目标指定为“clean install” – >>所需的工件将被下载到本地存储库。
  • – >>当build造成功! – >右键单击项目 – > Maven – >更新项目(检查清理)。

这个问题困扰了我一天。 我通过检查我的本地存储库位置来解决它。 我使用IntelliJ作为我的IDE,我发现默认的maven本地存储库是“C:/Users/.m2/repository”。 我改变了我的自定义path,问题解决了。