Maven 2 + Spring = Erro ao localizar o applicationContext.xml

Estou construindo um sistema bobo aqui em casa e comecei a implementar alguns testes automatizados no sistema. A minha idéia é aproveitar que uso o hibernate e o spring e fazer os testes usando essas ferramentas para diminuir a duplicação de código. Criei uma classe BaseTest que usa o DBUnit pois minha intenção também é usar o banco de dados. No método setUp eu criaria um contexto do Spring que já configuraria o Hibernate e tudo mais. A classe está mais ou menos assim…

[code]public abstract class BaseTest extends JdbcBasedDBTestCase {

private ApplicationContext context;

public ApplicationContext getContext() {
	if (context == null) {
		context = new ClassPathXmlApplicationContext("applicationContext.xml", this.getClass());
	}
	return context;
}[/code]

[code]


hibernate.cfg.xml

<bean id="transactionManager"
	class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	<property name="sessionFactory">
		<ref local="sessionFactory" />
	</property>
</bean>	[/code]

Meu problema é que, quando executo o método getContext do BaseTest, o sistema retorna o seguinte erro:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:109) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:423) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:353) at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:197) at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:172) at org.springframework.context.support.ClassPathXmlApplicationContext.&lt;init&gt;(ClassPathXmlApplicationContext.java:158) at femass.geac.teste.BaseTest.getContext(BaseTest.java:21)

Eu uso a estrutura padrão de arquivos do Maven e o arquivo applicationContext.xml está no seguinte diretório:

src / test / resources / applicationContext.xml
src / test / resources / hibernate.cfg.xml

Se eu usar o caminho completo do arquivo e o FileSystemXmlApplicationContext o sistema funciona, mas ai eu iria fixar o caminho no padrão do Maven, coisa que deixaria o meu sistema “feio”.

Alguem tem alguma dica?

Consegui acertar o problema colocando o nome do arquivo de configuração do spring como \applicationContext.xml.

O problema é que agora ele comecou a dar erro no hibernate. Vou listar abaixo:

1 - Minha configuração do hibernate é por JDBC mesmo, sem DataSource, mas aparece o erro abaixo:

WARNING: Could not bind factory to JNDI javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284) at javax.naming.InitialContext.getNameParser(InitialContext.java:439) at org.hibernate.util.NamingHelper.bind(NamingHelper.java:52) at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915) at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:871)

2 - Mesmo passando desse Warning, ele nao encontra o mapeamento das classes. Coloquei assim no hibernate.cfg…

Sendo que o arquivo está na pasta de resources do main.

Alguma sugestao?