我有一个 eclipse 项目,其中每个源文件夹都有自己的关联输出文件夹。它被称为/eclipse-classes,而不是/classes。
所以如果我有一个文件夹:src/main/java(典型的 Maven 东西)目标文件夹是:target/eclipse-classes
同样对于资源等。
这似乎可行(即 eclipse 生成放在这些文件夹中的 .class 文件)但是运行任何 Junit 测试都会抛出一个异常,指出“找不到类”。我正在使用内置的 Eclipse 测试运行程序运行 JUnit(即右键单击该类,“运行方式”,“Junit 测试”)。
将 /eclipse-classes 文件夹复制到 /classes 使它们成功,这意味着 eclipse 正在使用 /classes,但我找不到任何配置选项来更改它。有什么方法可以找出 eclipse 仍在使用 /classes 文件夹的位置和原因吗?
(也许相关,我也在使用 m2eclipse 插件)
受 Rich Seller 回答启发的一些附加信息:Maven 配置为在资源更改时运行以下命令:
process-resources resources:testResources
虽然这不会做任何有用的事情(复制到错误的目录),但资源在 atm 上没有问题,因为它们最终位于正确的位置。
.classpath 条目看起来没问题。有一堆 Maven 子项目,所以嵌套比 Rich 发布的要深一些,但除此行外,其他完全相同:
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
我认为我们可能不需要那个,但它不会伤害任何 atm。
edit2:进一步测试表明,eclipse 正在 /eclipse-classes 文件夹和 /classes 文件夹中生成类文件。似乎 m2eclipse 在自动构建时在后台运行 mvn build ,但我似乎无法找到禁用它的方法。如果这里没有人有任何其他想法,我将尝试与 m2eclipse 开发人员取得联系。
原文由 wds 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果使用 m2eclipse,则 Eclipse 项目中的配置将被插件覆盖。请参阅 本文 以获取解决方案。
这样做的原因是一些 Maven 插件无法处理
target/
之外的目录,因此 m2eclipse 开发人员强制编译类的文件夹为target/classes
和target/test-classes
,无论您在 Eclipse 中配置什么。通过使用配置文件,您可以为 Eclipse 使用不同的文件夹。不过,更改 maven(及其插件)的输出文件夹并不明智。