[英]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.