繁体   English   中英

仅在日食中的maven依赖冲突

[英]maven dependency conflict only in eclipse

我们有几个应用程序作为一些模块; 我们一直在使用NetBeans。 我试图将开发转移到eclipse。

所有项目都是使用Maven构建的。 其中一个使用dbunit,也使用POI。 当我尝试在eclipse中编译它时,它给我一个错误的方法签名错误。 用maven和命令行构建构建的NetBeans都不会给我这个错误。

我发现编译器试图使用比我们使用的版本更早的POI版本进行编译。 根据dbunit的maven存储库信息,POI的特定版本在编译范围中被指定为dbunit的依赖项。 我不明白为什么会把那个版本的POI拉到我的编译中,因为我正在使用dbunit,而不是编译它。

我也不理解为什么它被用于eclipse而不是其他两个编译操作。

我已经看到了关于SO和eclipse错误报告网站的一些评论,关于eclipse如何仅使用一个类路径,并且很难改变,并且没有计划改变。

如果这是真的,其他人如何处理这个? 我不能拥有世界上(甚至在我的城市)唯一一个使用具有与项目编译冲突的编译依赖项的库的项目。 是否有m2e补丁或eclipse解决方法,希望不涉及修改所有20个pom.xml文件的东西?

编译依赖项是可传递的。 Maven2Eclipse插件只使用树中的一个依赖项(可能与Maven不同)。

为安全起见,在使用dbunit时排除POI:

<dependency>
  <groupId>org.dbunit</groupId>
  <artifactId>dbunit</artifactId>
  <version>...</version>
  <exclusions>
    <exclusion>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
    </exclusion>
  </exclusions>
</dependency>

如果您使用较新版本的dbunit(如2.4.3),则对POI的依赖性是可选的,这意味着不具有传递性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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