[英]Eclipse detects wrong maven dependency
我面临着模糊的问题。
我是项目的新手。 我使用Eclipse。 我所有的同事都使用IDEA。 我有从svn结帐的项目。
我执行了相应的Maven任务来构建和部署项目。 一切正常。
但是我的Eclipse显示了问题。
在代码中:
sceneService.uploadFile(...);
蚀表明sceneService
没有uploadFile
方法
我开始研究。 我在同事的PC上上这堂课。 但是没有这个问题。 我注意到我们使用了不同版本的sceneService
类的jar文件。
我们使用pom.xml的相同修订版。
jar在我的pom.xml中的依赖关系(对于我的模块):
<dependency>
<groupId>com.day.cq.dam</groupId>
<artifactId>cq-dam-scene7</artifactId>
<scope>provided</scope>
</dependency>
当我输入alt+shift+w
我看到jar包含另一个模块中的sceneService
类。
我认为通过Maven下载正确的jar时存在一些问题。 您的本地存储库可能包含jar的早期版本。
通过从命令提示符转到项目的根文件夹来尝试这些命令。
如果问题仍然存在,请尝试删除本地.m2存储库,然后再次重建项目
我认为我之前对“提供的”范围的评论是一团糟。 实际问题可能是由于版本冲突造成的。
缺省情况下,Eclipse启用工件的工作空间解析 。 这意味着它将在您的工作区中的其他项目中找到要使用的工件(即cq-dam-scene7
)。 它还将在.m2
存储库中找到它们。 我不确定哪个优先。
解决方案的可能途径包括:
为工件指定一个版本。 即使必须在本地.m2
存储库中找到它,这也将确保您使用正确的JAR。
<dependency> <groupId>com.day.cq.dam</groupId> <artifactId>cq-dam-scene7</artifactId> <version>1.2.3</version> <scope>provided</scope> </dependency>
确保您的本地cq-dam-scene7
项目包含正确的代码-即定义了uploadFile()
方法的版本。
我面临类似的问题,我在工作区中有两个Maven项目。 Main Project使用Helper项目的输出JAR作为工件。
现在的问题是Main项目正在尝试引用Helper项目的JUnit库(其具有较旧的版本4.10),而不是它自己的具有4.12版本的JUnit库。 由于这种不正确的引用,我在主项目中遇到了构建错误。
我发现的唯一解决方法是关闭Helper项目,并在工作区中仅打开Main项目。
可能这是一个Eclipse错误。
删除.m2中的存储库文件夹(在用户目录中),然后让maven在下一个构建周期中对其进行重建。 这将确保本地不缓存任何旧的jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.