在Maven嵌入式Tomcat上部署webapp时,Spring无法加载属性

时间:2013-06-10 09:47:29

标签: maven spring-mvc maven-tomcat-plugin embedded-tomcat-7

手动部署到Tomcat时,我的webapp正常工作。我想在构建期间执行集成测试,我想使用tomcat7-maven-plugin来启动将部署webapp的嵌入式tomcat。

pom.xml中的配置:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <path>/${name}</path>
    </configuration>
    <executions>
        <execution>
            <id>start-tomcat</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
        <execution>
            <id>stop-tomcat</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>shutdown</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Tomcat正在启动但出现错误:

org.springframework.beans.factory.BeanInitializationException: 
   Could not load properties; nested exception is java.io.FileNotFoundException: 
   Could not open ServletContext resource [/WEB-INF/conf/configuration.properties]
war文件中存在

/WEB-INF/conf/configuration.properties。当war部署到独立的Tomcat实例时,应用程序可以正常工作。

任何可能导致Spring无法找到战争中存在的配置文件的想法?

1 个答案:

答案 0 :(得分:0)

/ WEB-INF / conf不在CLASSPATH中; / WEB-INF / classes是。尝试将.properties文件放在那里,看看你做得更好。

如果这不起作用,我想知道它是否是类加载器层次结构问题。 Java EE容器具有类加载器的层次结构:第一个是引导程序,第二个是应用程序服务器,最后一个是应用程序。可能是在应用程序服务器级别需要时,应用程序加载器中有.properties文件。