繁体   English   中英

Eclipse检测到错误的Maven依赖关系

[英]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的早期版本。

通过从命令提示符转到项目的根文件夹来尝试这些命令。

  1. MVN Eclipse:干净
  2. mvn eclipse:eclipse
  3. mvn安装

如果问题仍然存在,请尝试删除本地.m2存储库,然后再次重建项目

我认为我之前对“提供的”范围的评论是一团糟。 实际问题可能是由于版本冲突造成的。

缺省情况下,Eclipse启用工件的工作空间解析 这意味着它将在您的工作区中的其他项目中找到要使用的工件(即cq-dam-scene7 )。 它还将在.m2存储库中找到它们。 我不确定哪个优先。

解决方案的可能途径包括:

  1. 为工件指定一个版本。 即使必须在本地.m2存储库中找到它,这也将确保您使用正确的JAR。

     <dependency> <groupId>com.day.cq.dam</groupId> <artifactId>cq-dam-scene7</artifactId> <version>1.2.3</version> <scope>provided</scope> </dependency> 
  2. 确保您的本地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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM