2012-12-13 84 views
4

我正在嘗試解決我的配置文件問題。使用maven時將彈性配置文件放在哪裏

我有這種結構的Spring MVC應用程序(我目前的結構)

 
src/main/java/ ....................... (java classes) 
src/main/resources/ .................. (some .properties files) 
src/main/webapp/ ..................... (web content, web.xml) 
src/main/webapp/spring/ .............. (other spring config files, app-confix.xml, etc.) 
src/main/webapp/myApp-servlet.xml .... (servlet config) 


src/test/java ........................ (java test classes) 
src/test/resources ................... (some test .properties files) 

(這是非常標準的Maven項目目錄結構)

所以,我的問題是:我應該把春天配置文件資源目錄或不? 我不確定他們是否可以被視爲資源文件。大多數Spring項目都在WEB-INF /目錄中進行配置。但是單元測試有一個問題,因爲當我需要加載servlet配置時,maven希望配置文件位於/ test/resources目錄中。我知道,我可以將上下文xml文件複製到被測試的類,一切都會好的,但對我來說看起來並不好。

我在網上閱讀了很多文章,但我仍然不確定什麼是正確的方法。

所以我有樹選項:

1.住宿與當前的結構

2.移動所有Spring配置到/主/(Java |測試)/資源 在這裏我可以看到一件壞事。所有的配置文件都將在類目錄中,我不確定這是否正確。

3.僅將servlet配置移動到/ main /(java | test)/ resources,並將其他彈簧配置文件保存在/ WEB-INF /目錄中。

那麼,你有什麼建議? 在Maven和JUnit中使用Spring時配置文件放置的最佳實踐是什麼?

更新:在選項2固定目錄的命名和3

更新:我發現很有趣的閱讀[1]的最佳做法是在春天。它看起來非常有希望並證實了拉爾夫的解決方案。我對WEB-INF/classes中的META-INF目錄仍然不滿意,但是,沒有什麼是完美的。

[1] http://gordondickens.com/wordpress/2012/07/03/enterprise-spring-best-practices-part-1-project-config/

回答

11

一個常見的模式(例如,通過Spring Roo的應用中使用)是將配置文件下src\main\resources\META-INF\spring\

然後就可以在測試中通過相同的表達classpath:META-INF\spring\application-context.xml加載它們以及如在你的應用程序中。

+0

好的,這是合理的解決方案,我應該放置僅用於單元/集成測試的上下文文件?到'src \ test \ resources \ META-INF \'目錄下? – Peter

+0

在一個測試資源文件夾中:'src \ test \ resources \ ...' – Ralph

+0

我很抱歉,但我還有一個奇怪的問題。我遵循你的建議,但是我的META-INF目錄被複制到了「WEB-INF/classes'目錄中。所以,在我的情況下,我有'webApp/WEB-INF/classes/META-INF/spring ...'中的所有配置文件。我不確定這是否是正確的行爲,我認爲'java/main/resources/META-INF'中的所有文件都應該位於'webApp/META-INF'目錄中,而不是'webApp/WEB-INF/classes'目錄。 – Peter

相關問題