2011-04-08 131 views
0

我正在用Maven構建GWT應用程序以進行依賴關係解析,並且在嘗試運行JUnit測試時遇到了Eclipse的奇怪問題。我的來源和試驗的標準行家狀結構:Eclipse - JUnit/m2eclipse類路徑問題

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

如果我設置了Java構建浴>默認輸出文件夾中所有的源文件夾到:

/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/classessrc/test/java/target/test-classes,則一切正常。但是,如果任何輸出目錄設置在這兩個之外,它不起作用。

我將不勝感激任何想法,謝謝!

+0

我剛剛意識到我可以將文件夾/ MyProject/src/main/webapp/WEB-INF/classes添加到Java Build Path> Libraries,並且它可以工作!但是,Eclipse是不是應該自動執行此操作? – janhink 2011-04-09 10:27:04

回答

5

m2eclipse具有運行單元測試時忽略項目類路徑設置的獨特歷史。它曾經是(0.12版本的m2eclipse和我認爲的更早的版本),如果你放棄了戰鬥並將你的項目默認類路徑設置爲目標/類(對於源代碼)和目標/測試類(對於單元測試代碼),一切都會很開心。在0.13 m2eclipse的情況下,這個不再有效,因爲這個maven構建器似乎把東西放在target /你的artificat-version-SNAPSHOT/web-inf/classes中。基本上,Maven構建的工件文件夾。這真的很糟糕,因爲該路徑包含一個版本號。

m2eclipse已經用盡了我的耐心;-)。提示:要了解您的單元測試類路徑正在發生什麼,您可以始終將DEBUG作爲單元測試,然後右鍵單擊調試透視圖中的線程並拉起「屬性」。這將向您顯示用於單元測試的完整類路徑,您可以看到什麼鬼鬼祟祟的煩人插件正在爲您的類路徑做些什麼。

+1

你給我的調試技巧工程魔術,我沒有意識到Eclipse有這樣的功能,謝謝!因爲沒有人敢回答這個問題,所以你是贏家:) – janhink 2011-04-19 07:31:00

+0

* m2eclipse已經耗盡我的耐心; - )* 儘管我非常尊重m2eclipse開發者所做的努力,但我開始加入你在這個看法... :-) – Jens 2012-08-24 13:14:01