Eclipse:Maven搜索依赖项无法工作

99

我在一个新的工作空间中创建了一个简单的Maven项目。

当我打开Eclipse编辑器中的pom.xml文件的Dependencies视图,并选择Add..依赖项时,无论我在搜索字段中输入什么搜索条件,都没有搜索结果:

例如,它会立即给出 Results for 'spring' (0)

在我的其他工作空间中,我的现有项目没有这个问题。

是否有办法解决这个问题?


3
我相信以下链接中有解决方案:stackoverflow.com/questions/7065478/classic-error-unable-to-update-index-for-centralhttp-repo1-maven-org-maven2 - Eric
8个回答

195

Eclipse的构件搜索依赖于存储库的索引文件。看起来您没有下载索引文件。

前往Window -> Preferences -> Maven并勾选"Download repository index updates on start"。重新启动Eclipse,然后查看进度视图。应该正在下载一个索引文件。

完全下载后,构件搜索将准备就绪。

Maven Settings

更新 在'maven仓库视图'中,您还需要重建Maven仓库索引。

在该视图中,打开“全局存储库”,右键单击“central”,勾选“Full Index Enable”,然后在同一菜单中点击“Rebuild Index”。

将会下载一个66M的索引文件。

Maven Repositories -> Rebuild Index


4
窗口->首选项->Maven - McLovin
6
重启时更新代码库需要很长时间,不确定是否完成,有没有其他替代方案? - Vasanth Nag K V
当我下载了最新版本的Eclipse并创建了一个新的工作区时,我遇到了同样的错误。上面提供的解决方案对我来说完美地解决了这个问题。谢谢。 - Chinmay Biswal

9
在您的Eclipse中,转到Windows -> Preferences -> Maven Preferences Maven Screenshot 选中“启动时下载仓库索引更新”选项。 您可能需要重新启动Eclipse。
同时,转到Windows -> Show view -> Other -> Maven -> Maven repositories Maven Repository View Screenshot 在Maven仓库面板上,展开全局仓库,然后右键单击Central仓库并选中“启用完整索引”选项,然后单击“重建索引”Full Index Screenshot

1
你的回答与之前被接受的马秀军的回答相比有什么不同吗?看起来你只是复制了那个答案并重新表述了一下。甚至你回答中的截图几乎与被接受的答案中的截图完全相同! - skomisa
@skomisa 我根本没有抄袭答案。我是在真正遇到这个问题时回答的。而且这些屏幕截图都是来自我的工作。在stackoverflow上复制粘贴答案毫无意义。如果我真的会复制粘贴,那么我现在应该已经回答了成千上万个问题,但事实并非如此。 - Hetal Rachh
4
好的,但是你的回答只是重复了已被接受的答案中提供的信息。 - skomisa

4
如果您在公司代理内,但新项目未指向正确的settings.xml文件(其中包含代理凭据),您可能会得到此结果。
如果您正在使用Maven代理(例如Nexus)并且代理中的索引出现问题,也可能会导致此错误。我不知道如何解决这个问题,您可以尝试一些方法或联系设置Maven代理的人。
如果新的工作空间还没有从Maven Central或代理服务器下载索引,则同样可能导致此问题。(这是最好的情况,只需等待一段时间它就会自行解决。)

实际上我有两个工作区打开(在两个不同的Eclipse中),其中一个可以工作,而另一个则不能,所以这不可能是代理或互联网连接问题。而且两个工作区都没有setting.xml文件...我认为你关于下载的索引可能是正确的,但我不知道如何下载它(我从昨天开始就一直遇到这个问题,所以等待是无用的)。 - Majid Laissi
1
我正在使用MyEclipse,我的偏好设置可能与您的不同。但是我有一个按钮,您可以通过窗口>首选项>MyEclipse>Maven4MyEclipse>用户设置来获取。该按钮标记为“重新索引”,如果单击它,则可能会有所帮助。这里有一张图片和更多信息:(点击) - Lee Meador
顺便提一下 - settings.xml 是一个位于用户文件夹中 .m2 文件夹中的文件。 (Windows 7 的路径为 c:\Users\YourName.m2,Linux 的路径为 ~/.m2),它可以保存多个工作区的全局信息。同样的首选项页面可以让您选择它。 - Lee Meador
谢谢您的时间。我已经尝试过了,但重新索引只会重新索引我的本地Maven仓库(我已经拥有的库)?至于settings.xml文件,在任何工作区中都不存在(Eclipse首选项/用户设置引用C:\ Users \ XX \ .m2 \ settings.xml并说“用户设置文件不存在”),两个工作区都是一样的,所以我想这不重要。 - Majid Laissi
如果没有代理、密码,且您所需的一切都在Maven中央仓库中,那么您可以不需要设置文件。点击http://maven.apache.org/settings.html以获取有关文件内容的信息。 - Lee Meador
你使用的是哪个Maven Eclipse插件? - Lee Meador

4

对于这个问题,以下方法适用:

  • 删除 ~/.m2 文件夹
  • 在 Maven 仓库视图中启用“Full Index Enabled”选项,选择中央仓库
  • 在中央 Maven 仓库上执行“Rebuild Index”操作

重启 Eclipse 后,一切都应该正常工作。


3
"Maven添加依赖实际上是从Maven索引中获取的。如果索引是最新的,结果应该来自于那里。
如果你前往Maven仓库,然后选择全局仓库,你应该会看到一个“central...”选项卡,选择它,会显示一个文件夹列表,你应该能够从那里看到所有的索引。如果没有,那么就意味着你没有得到完整的索引,可以右键单击该选项并启用完整索引。
另一件让我最困扰的事情是,即使我已经做了所有的事情,当我输入“spring”时仍然没有任何显示。这其实是我做错了的地方。如果你只是输入额外的文本“springframework”,BOOM,结果就出现了。"

1
我有同样的问题。上面提出的所有选项都对我无效。但是我发现,如果我手动添加groupid/artifact/version到org.springframework.spring-core版本4.3.4.RELEASE的pom.xml中并保存,依赖项会自动下载,并且搜索已经存在于存储库中的jar包有效。 但是,如果我现在搜索当前依赖项中没有的org.springframework.spring-context,则此搜索仍然无法工作。

0

使用 https://search.maven.org/ 手动添加前缀 fc: 来搜索类名。Netbeans 和 Eclipse 似乎太愚蠢了,无法使用该搜索接口,而下载的存储库索引却不包含任何类信息。完全浪费磁盘空间。这些 IDE 项目最近维护得如此糟糕,我希望他们能将开发转移到 GitHub。


0

下载所需的jar文件必须提供Group Id和Artifact Id。如果要搜索,请在这些字段中使用*。


实际上,在 Eclipse -> 项目 -> Maven -> 添加依赖 视图中,这确实有效!在 输入 groupId、artifactId... 字段中,似乎 >=3 个字母的内容会执行与 group idartifact id 中的任何内容独立的搜索... 我认为这是令人困惑的 UI 设计。例如,group id: foo + artifact id: bar + enter groupId, artifactId ...: slf4j 可能会显示多个不匹配 foobarslf4j 库的搜索结果。 - Andreas Covidiot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接