Problème de context Spring avec les différents répertoires main et test
Bonjour à tous,
Je suis actuellement en train d'adapter mon application Web Spring à la structure Maven.
Au début, l'ensemble de mes fichiers de configuration Spring était donc dans le répertoire /main/resources/spring/. L'application marchait très bien.
Pour gérer des fichiers de configuration par environnement, j'ai suivi cet article qui propose de créer des profiles
Dans mon répertoire resouces, je met tous les fichiers commun quels que soit l'environnement.
Dans les répertoires resources_test et resources_dev, je met le fichier specific (Typiquement la connexion à la base)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources_dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources_test</directory>
</resource>
</resources>
</build>
</profile>
</profiles> |
Le problème, c'est que je pense que je n'utilise pas la bonne instruction dans mon fichier web.xml.
Code:
1 2 3 4 5 6 7
|
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext*.xml
</param-value>
</context-param> |
Résultat, mon application ne prend que le fichier spécifique et pas les fichiers communs. Il n'arrive pas à charger les différents beans du context Spring (managers, dao, etc.)
Avez-vous une idée?
Dans le même genre, mes classes de test unitaire placé dans le répertoire test/java n'ont accès qu'au resource du répertoire test alors que je voudrais pouvoir utiliser les fichiers de configuration commun .
D'avance merci pour vos réponses
structure Maven classique
src/main/java (packages des classes applicatives)
src/main/resources (fichiers spring, pas dans un sous-répertoire)
src/test/java (packages des classes de test)
=> inutile de préciser quoi que ce soit (resources ou autres) dans le pom.xml
oups ; quelle tête de linotte !
Nos tests sont bien évidemment* configurés :
Code:
1 2 3 4 5 6 7 8
|
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={ "/applicationContext-environment.xml",
"/applicationContext-remoting.xml",
"/applicationContext-scheduling.xml" })
public class BasicSpringTest extends AbstractJUnit4SpringContextTests {
...
} |
Ne pas oublier l'import de Spring-test :
Code:
1 2 3 4 5 6 7 8
|
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>2.5.6</version>
<type>jar</type>
<scope>test</scope>
</dependency> |
* pour la branche principale, le lancement de Spring est fait par le conteneur (cf. web.xml) ; pour les tests, il faut donc indiquer à jUnit qu'il y a de l'injection à faire. Il ne peut pas le "savoir", n'étant pas relié au conteneur.