2012-12-13 5 views
4

J'essaie de résoudre mon problème de configuration-files.Où mettre les fichiers de configuration de ressort lors de l'utilisation de maven

Je demande Spring MVC avec cette structure (ma structure actuelle)

 
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) 

(qui est assez structure de répertoire standard de projet Maven)

Alors, ma question est la suivante: Dois-je mettre le printemps fichiers de configuration dans le répertoire des ressources ou non? Je ne sais pas si elles peuvent être considérées comme des fichiers de ressources. La plupart des projets de printemps ont une configuration dans le répertoire WEB-INF /. Mais il y a un problème avec les tests unitaires, parce que quand je dois charger une configuration de servlet, Maven attend des fichiers de configuration dans le répertoire/test/resources. Je sais, que je peux copier le fichier xml de contexte à la classe testée et tout ira bien, mais cela ne semble pas si bon pour moi. Je lisais beaucoup d'articles sur internet, mais je ne suis toujours pas sûr de la bonne façon de procéder.

J'ai donc des options d'arbres:

1. séjour avec structure actuelle

2. déplacer toutes de configuration de ressort à la/main/(java | Test)/ressources Ici, je peux voir une mauvaise chose. Tous les fichiers de configuration seront dans le répertoire des classes et je ne suis pas sûr que ce soit correct.

3. déplacez uniquement la configuration de servlet vers les ressources/main/(java | test)/et gardez les autres fichiers de configuration de ressort dans le répertoire/WEB-INF /.

Alors, que recommandez-vous? Quelles sont les meilleures pratiques pour l'emplacement des fichiers de configuration lors de l'utilisation de Spring avec Maven et JUnit?

MISE À JOUR: nommage répertoire fixe dans l'option 2. et 3.

MISE À JOUR: Je trouve très intéressant à lire [1] sur les meilleures pratiques au printemps. Cela semble très prometteur et confirme la solution de Ralph. Je ne suis toujours pas content de la présence du répertoire META-INF dans WEB-INF/classes mais, bon ... rien n'est parfait.

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

Répondre

11

Un modèle commun (par exemple utilisé par les applications Spring Roo) est de mettre les fichiers de configuration sous src\main\resources\META-INF\spring\

Ensuite, vous pouvez les charger via la même expression classpath:META-INF\spring\application-context.xml dans les tests aussi bien comme dans votre application.

+0

Ok, c'est une solution raisonnable et où placer des fichiers de contexte qui ne sont utilisés que pour les tests d'unité/d'intégration? Au répertoire 'src \ test \ resources \ META-INF \'? – Peter

+0

Dans un dossier de ressources de test: 'src \ test \ resources \ ...' – Ralph

+0

Je suis tellement désolé, mais j'ai un autre problème étrange. J'ai suivi votre recommandation, mais mon répertoire META-INF est copié dans le répertoire 'WEB-INF/classes'. Donc, dans mon cas, j'ai tous les fichiers de configuration dans 'webApp/WEB-INF/classes/META-INF/printemps ...'.Je ne suis pas sûr que ce soit le bon comportement, je pense que tous les fichiers dans 'java/main/resources/META-INF' devraient se trouver dans le répertoire' webApp/META-INF' et non dans le 'webApp/WEB-INF répertoire/classes'. – Peter

Questions connexes