这可能是重复的,但是在 Eclipse 中,我如何处理本地 Maven 存储库中同一库的各种依赖版本?
问题是pom定义中指定的依赖版本是我需要使用的库(它们有可用的sources/javadoc等),但是maven将所有可用的库版本放在类路径上,所以如果我ctrl+shift+ T或进入属于该依赖项的某个类,它可能是没有sources/javadoc的类,该类未在pom定义中声明,而是在本地maven存储库中声明。没有办法设置优先级。
弹出窗口(Ctrl+shift+T)中有一个“从历史记录中删除”功能,但它实际上没有用,不起作用。
最佳答案
The problem is that dependency versions specified in pom definition are the libraries I need to use (they have sources/javadoc available etc.), but maven puts all the available library versions on classpath (...)
不,那不是真的。 Maven 将您告诉他的内容放在类路径上。
(...) so that if I ctrl+shift+T or step into some class which belongs to that dependency, it might be the one without sources/javadoc, the one not declared in pom definition but in local maven repo.
使用 Eclipse,当您打开类型时,Eclipse 只需在工作区中所有项目的类路径中搜索类型。因此,如果您的项目 A 的类路径上有 foo-X.jar
,项目 B 的类路径上有 foo-Y.jar
并且两者都包含Bar
类型,搜索 Bar
将列出两个版本。
但是 Eclipse 不会在工作空间中未定义为项目依赖项的 JAR 中进行搜索,也不会在本地存储库的所有 JAR 中进行搜索。这并不是 Maven 或 m2eclipse 特有的问题。
也就是说,我知道将搜索限制为仅项目 A 的依赖项的唯一方法是使用下面的菜单定义一个工作集右上箭头:
关于eclipse - m2eclipse 对类路径的多个依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006107/