1

我在同一个工作区中将两个 Maven 项目导入到 Eclipse 中。两者都有一个具有相同名称和包的类,但不同的实现和在每个项目中的不同位置。让我们调用这个类com.namespace.Factory

项目 A 在其测试文件夹下有 Factory,即:/src/test/java/com/namespace/Factory.java

项目 B 在其主要源文件夹下有 Factory,即:/src/main/java/com/namespace/Factory.java

还有一个项目 C 依赖于两者。项目 C 还使用项目 B 中的 Factory 进行一些单元测试。现在的问题是 Eclipse 无法编译 Project C,因为它无法区分两个工厂类。如果我在命令行中构建所有项目,它们就没有问题。

您会认为 Eclipse 会忽略 Project A Factory 类,因为它正在测试中。

我正在使用 m2e 插件。我目前的工作是设置 m2e 以不解决工作区中项目 C 的依赖关系。这会迫使它下载其中没有测试的 jar。但是,这意味着我在 A 或 B 中都有更改,我必须手动安装 A 或 B 将最新的 jar 推送到本地 repo,并更新项目 C 的依赖项以拉下最新的 jar。

有没有办法从项目 C 的构建路径中排除项目 A 测试文件夹,以便我可以继续解决工作区中的所有问题?感觉就像 Eclipse 正在破坏 maven 项目的基础。

4

2 回答 2

2

我认为您只是受上游错误影响的另一个用户:https ://bugs.eclipse.org/bugs/show_bug.cgi?id=376616

总结起来,错误报告讨论包括:

JDT 只为每个 Eclipse 项目实现一个构建路径。这不太可能改变,因为这是基本的设计选择,许多 API 和实现细节都依赖于此。

好吧,但我猜这并不能真正回答你的问题。因此,我在这里看到了多种选择,具体取决于您对项目可能产生的影响:

  • 要么尝试重命名其中一个类 => 名称将是唯一的
  • 或者如果这些类包含基本相同的功能,则在项目之间使用依赖关系,甚至创建新的,其他 2 将依赖
  • 这就是我现在想到的
于 2013-03-30T20:27:29.517 回答
0

也许你可以试试这个:在项目 A 的属性对话框中(通过右键单击项目然后单击属性到达那里),
单击左侧的部署程序集。
Eclipse 将显示所有源文件夹。
选择测试文件夹 (/test) 并单击删除。

于 2017-09-26T13:37:43.933 回答