2013-02-18 67 views
0

我正在開發一個spring項目,我剛剛遇到了在junit中加載XML配置文件的嚴重問題(但它們可以從Web控制器訪問) - 無法加載XML文件。春天在哪裏存儲xml配置文件

我把我的類路徑(在JUnit測試),發現外,其餘中,有2個目錄包括:

/var/www/Java/lyricsBase/build/web/WEB-INF/classes/ 
/var/www/Java/lyricsBase/build/test/classes/ 

只有一個文件,我想在我的測試,包括:

  • /WEB-INF/lyricsBaseApp-servlet.xml

而且進口下面3個文件:

  • /WEB-INF/hibernate.xml
  • /WEB-INF/dataSource.xml
  • /WEB-INF/beans.xml

我可以清楚地看到,部署我的Tomcat項目將confg文件複製到/var/www/Java/lyricsBase/build/web/WEB-INF/ABC.xml,但該目錄不在類路徑中,而是包含/var/www/Java/lyricsBase/build/web/WEB-INF/classes。我讀過WEB-INF不應該在類路徑中(這只是一個Java EE原則)。好的 - 我應該在哪裏將我的配置文件輕鬆地從Web控制器和junit測試中訪問它們?任何良好做法?

+0

當你使用Maven時,比看看這個問題:http://stackoverflow.com/questions/13859755/where-to-put-spring-configuration-files-when-using-maven – Ralph 2013-02-19 08:05:39

回答

2

將配置文件放在war-package的WEB-INF/classes下,它們將被加載到類路徑中。考慮將你的代碼部署爲分解戰爭,這樣配置文件可以很容易地改變。

另外考慮使用maven戰爭項目爲您的包裝。如果你這樣做,你可以將你的配置文件放在源代碼下的src/main/resources下,然後將它們打包到WEB-INF/classes中。

+0

在WEB-INF/classes下放置源XML文件似乎是一個骯髒的解決方法。 Maven似乎是當時最好的解決方案。 – ducin 2013-02-19 09:21:57

+0

我見過的其他方法是給你的tomcat classpath添加一個額外的位置,並將你的配置文件放在那裏(需要挖掘tomcat手冊如何做到這一點) – gerrytan 2013-02-20 04:34:22

1

我有同樣的問題,從那時起就開始把它們放在META-INF資源下。這是在Tomcat中不運行的Spring模板項目放置它們並似乎解決我的問題的地方。

+0

但我使用Tomcat ...並且我無法在我的類路徑中看到META-INF。 – ducin 2013-02-18 23:45:43