Eclipse - JUnit / m2eclipse类路径问题

时间:2011-04-08 19:32:59

标签: eclipse gwt m2eclipse

我正在使用Maven构建一个GWT应用程序来进行依赖项解析,在尝试运行JUnit测试时,我遇到了一个奇怪的问题。我有一个标准的maven式结构的源和测试:

/src/main/java
/src/test/java

如果我设置 Java Build Bath>所有源文件夹的默认输出文件夹为:

/MyProject/target/classes
那时没有问题。但是,GWT插件需要源代码驻留在:

/MyProject/src/main/webapp/WEB-INF/classes

为了能够在开发模式下从这个目录部署,否则就会抱怨。但是,如果我将所有源文件夹的输出目录设置为此目录,则测试将因ClassNotFoundException而失败。

如果我手动将目录/MyProject/src/main/webapp/WEB-INF/classes添加到JUnit启动程序的类路径中,这可以解决,显然,编译的.class文件丢失了,因此我得到了异常。但是,如果我将目录定义为默认输出目录,为什么eclipse不会自动将目录添加到类路径中?

我怀疑m2eclipse插件会覆盖默认输出文件夹设置,可以吗?因为如果我将/src/main/java的输出文件夹设置为/target/classes而将src/test/java设置为/target/test-classes,那么一切正常。但是如果在这两个输出目录之外设置任何输出目录,它就不起作用。

我很感激任何想法,谢谢!

1 个答案:

答案 0 :(得分:5)

m2eclipse具有在运行单元测试时忽略项目类路径设置的传奇历史。它曾经是(m2eclipse的0.12版本,我认为更早),如果你只是放弃了战斗并将你的项目默认类路径设置为目标/类(对于源代码)和目标/测试类(用于单元测试)代码),一切都会很开心。使用0.13 m2eclipse,这不再有效,因为maven构建器似乎把东西放在target / your-artificat-version-SNAPSHOT / web-inf / classes中。基本上,maven构建的工件的文件夹。这真的很糟糕,因为该路径包含版本号。

m2eclipse让我的耐心耗尽; - )。

提示:要了解单元测试类路径的内容,您可以随时将DEBUG作为单元测试,然后在调试透视图中右键单击该线程并拉出“属性”。这将显示用于单元测试的完整类路径,您可以看到偷偷摸摸的恼人的插件对您的类路径做了什么。