2011-06-07 129 views
13

当我使用命令:mvn test时,maven使用主资源而不是src/test/resources中的测试资源。如何使maven使用测试资源

如何让maven使用测试资源而不是主要资源?

编辑:我使用Classloader来查找我的资源。 Classloader可以从我的src/test/resources目录中找到资源,但它首先在src/main/java中查找资源。

ClassLoader loader = Thread.currentThread().getContextClassLoader(); 
InputStream file =loader.getResourceAsStream("resource.xml"); 

或者是否有任何属性可以在运行maven命令时使用,它将优先考虑classpath?编辑2:我已经找到了问题,它确实从测试/资源加载测试,但是我的测试涉及到部署webapp(集成测试),并且当web应用程序访问它使用的资源时src/main /资源。有没有办法改变类路径的顺序,或者使一个在jetty容器中部署的WAR先于另一个?

+2

请不要再次提出相同的问题,编辑您现有的问题与任何相关的更新,而不是这会给你的问题一个凹凸。谢谢。 – Kev 2011-06-08 16:04:09

回答

4

难道你不能给它另一个名字?
加载程序不知道你的resource.xml是在src/main/resourcessrc/test/resources,它只是一个寻找的路径。我认为问题不是Maven,这是Loader应该如何工作的。从Maven你会期望在测试阶段放弃所有课程/资源src/main/resources

+0

你是可能的吗? – Sujen 2011-06-08 14:52:55

+0

不知道。也许你可以配置surefire或者在测试类中手动加载资源。 – 2011-06-08 15:30:51

+1

我已经想出了这个问题,它从测试/资源进行测试加载,但是我的测试涉及部署webapp(集成测试),并在web应用程序访问使用src/main/resources的资源时从那里进行测试。有没有办法改变类路径的顺序,或者使一个在jetty容器中部署的WAR先于另一个?我会更新我的问题 – Sujen 2011-06-08 15:39:25

6

请检查您的目标/测试类目录为resource.xml。 你的文件应该在这里。如果你找到这个文件,我觉得同样的名字是问题。尝试将文件重命名为test-resource.xml。如果该文件不存在于test-classes目录中,则应该在maven pom.xml中配置资源管理。使用maven-resouce-plugin。 希望它有帮助。