在Eclipse中,如何从另一个具有依赖项的项目中排除一个maven项目的测试文件夹?

时间:2013-03-30 16:44:09

标签: eclipse maven testing m2e

我在同一个工作区中导入了两个maven项目。两者都有一个具有相同名称和包的类,但是每个项目中的实现和位置不同。我们称这个班为com.namespace.Factory

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

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

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

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

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

有没有办法从Project C中的构建路径中排除Project A测试文件夹,以便我可以继续解析工作区中的所有内容?感觉Eclipse正在破坏对maven项目至关重要的东西。

2 个答案:

答案 0 :(得分:2)

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

总结一下,错误报告讨论包括:

  

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

嗯,但我猜这并没有真正回答你的问题。 所以我在这里看到了多个选项,具体取决于您对项目的影响程度:

  • 尝试重命名其中一个类=>名称将是唯一的
  • 或者如果类包含基本相同的功能,则使用项目之间的依赖关系,甚至创建新的,其他2依赖于
  • 这就是我现在想到的内容

答案 1 :(得分:0)

也许你可以试试这个: 在项目A的“属性”对话框中(通过右键单击项目然后单击“属性”来实现),
单击左侧的Deployment Assembly Eclipse将显示所有源文件夹 选择测试文件夹(/ test),然后单击“删除”。