2011-01-07 47 views
1

我想在运行时在我的项目中搜索类路径。我们使用Maven进行构建管理,使用Hudson进行CI构建。当然,在我的本地盒子里,一切都很好。但是,当Hudson运行单元测试时,它找不到在构建过程中生成的类 - Maven应该将它们放在./target/classes中,但是当我从Hudson登录类路径(System.getProperty("java.class.path"))时,它只给出一个包含两个maven-相关的JAR--根本没有目录,当然不是当前项目的编译器输出目录。这是哈德森的错吗? Maven的?我是否以这种错误的方式去做?哈德森不使用Maven生成的类路径?

ETA:I 认为这可能是通过升级Hudson使用的Maven运行时修复的。问题是我们通过反射寻找插件类,类似于this post中的想法 - 不是实际的代码,但它给了你这个想法。无论如何,这听起来像Hudson使用的类路径只能“引导”实际的测试工具;无论出于何种原因,它现在似乎已经修复。长话短说:如果你有类似的问题,请尝试升级你的Maven。

+0

究竟是什么问题?测试是否因类路径错误而失败? – Raghuram 2011-01-08 03:34:39

回答

0

两个修复程序。一,升级Maven。二,不要依赖classpath hackery来迭代你的classloader可以看到的东西,la是描述中链接到的“资源发现”技巧。