gpt4 book ai didi

java - Maven 依赖冲突仅在 Eclipse 中发生

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:55 26 4
gpt4 key购买 nike

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

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

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

我也不明白为什么它被拉入 Eclipse 而不是其他两个编译操作中的任何一个。

我在 SO 和 eclipse bug 报告网站上看到了许多关于 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 的依赖是可选的,这意味着不可传递。

关于java - Maven 依赖冲突仅在 Eclipse 中发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40920287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com