2011-06-07 170 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。 希望它有幫助。