【问题标题】:Maven error on first step in tutorial教程第一步出现 Maven 错误
【发布时间】:2013-01-12 20:28:26
【问题描述】:

我正在关注一个很棒的教程:http://www.objectdb.com/tutorial/jpa/eclipse/spring/project

在复制 pom.xml 的代码后的第一步,我收到 9 个错误。这是我的 pom.xml 第 1 行显示的错误:

Failure to transfer org.apache.maven.reporting:maven-reporting-api:jar:2.0.6 from http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.maven.reporting:maven-reporting-api:jar:2.0.6 from/to central (http://repo.maven.apache.org/maven2): The operation was cancelled.   pom.xml /Guestbook  line 1  Maven Configuration Problem

如有必要,我可以发布其他错误。在此之前我尝试过运行一些简单的预制 maven 项目,我相信他们称它们为 archtypes。他们有类似的错误。我不明白为什么会发生这种情况,而且我无法得到一些不立即抛出错误的 hello world 东西。

【问题讨论】:

  • 只需删除语言环境存储库 .m2/repository 并重试即可。你是在代理还是其他什么背后?
  • 我在家里做这个项目,我不应该在代理后面。我找不到 .m2 文件夹。我用 ls -a 搜索了我的 Eclipse 项目文件夹。
  • 我找到了 .m2 项目,将其删除,然后更新了我的项目。所有的错误都像魔术一样消失了。谢谢:)
  • 删除 .m2 存储库是黑魔法。在这种情况下它“起作用”的原因是它消除了在 Maven 中持续 24 小时的缓存工件解析失败。请参阅下面的答案。

标签: eclipse maven m2eclipse pom.xml


【解决方案1】:

对伏都教说不。不要核弹.m2!

当 Maven 尝试为您的构建解析依赖项时,它首先会查看本地存储库,也就是 .m2/repository。如果它在那里找到它们,它将使用这些本地缓存的工件。如果工件在本地存储库中不存在,Maven 将尝试从它知道的远程存储库中解析它。开箱即用,它只知道 maven central。所以,它会去那里。

您遇到的场景有一个主要的并发症。如果给定的依赖项工件是 SNAPSHOT 工件,那么您将需要偶尔检查该工件的新版本,因为 SNAPSHOT 名称表明它当前正在开发中并且可能会经常更改。为了处理这个问题,Maven 被构建为每天在远程存储库中检查一次它在本地存储库中拥有的任何 SNAPSHOT 工件的更新版本。

此外,如果它试图在远程存储库中找到一个伪像并出现某种故障——通常是由于网络相关问题可能是暂时的或永久性的(网络缓慢或代理设置)——这也是失败在本地存储库元数据中注明。与 SNAPSHOT 解决方案一样,此故障将作为给定工件的状态持续 24 小时。

要覆盖 Maven 的 24 小时政策,您不必核对本地存储库。您只需将 -U 标志传递给它,这会导致它“更新”所有本地工件状态,即它将出去并重新检查远程存储库中的所有内容(除了成功解决的发布工件 - 发布应该是永久的)它知道关于。

那么,试试吧:

mvn -U install

不是,

rm -Rf .m2

【讨论】:

  • 感谢乍得的详细而周到的帖子。我正在使用 M2Eclipse。我可以在我的 IDE 中执行与 mvn -U install 等效的操作吗?
  • 我认为您可以在使用运行配置来设置执行 maven 构建的任务时进行配置。
  • 使用 M2Eclipse 您可以尝试:右键单击项目 -> Maven -> 更新 Maven 项目并选中“强制更新快照/发布”
【解决方案2】:

在eclipse中,在你的项目名称下右击,选择弹出菜单:Maven->Update Project。在接下来的对话框中,勾选“Force Update of Snapshots/Releases”,点击“OK”。然后maven会重新下载需要的依赖。无论如何,这解决了我的问题。

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多