Maven将applicationContext.xml从src / main / resources复制到target / myproject / WEB-INF

时间:2011-11-17 16:33:35

标签: java spring maven applicationcontext

目前,我认为是默认值,它会复制到

target/myproject/WEB-INF/classes

因此在部署时不会获取上下文。

另外,我想引用服务器特定的配置文件 database.properties ,我想将它放在tomcat / conf中,然后在 applicationContext.xml 中引用它,我怎么能这样做?

另外(2),我的印象是这是一个相当标准和体面的方式来设置 - 如果我错了,请纠正我。

修改的 对于服务器特定的配置文件,我使用此

<context:property-placeholder 
      location="file:${catalina.home}/conf/database.properties" 
      ignore-unresolvable="true"
 />

2 个答案:

答案 0 :(得分:6)

如果您需要将applicationContext.xml保留为类路径资源,则可以通过将以下行添加到ContextLoaderListener来配置web.xml以从类路径中选择它:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

比将Maven复制到WEB-INF要容易得多。

关于第二个问题,您可以配置PropertyPlaceholderConfigurer<context:property-placeholder>以从文件系统加载.properties文件。

答案 1 :(得分:2)

对于标题问题:通常在.war maven模块中,您将把与Web相关的资源放在src / main / webapp下,而不是src / main / resources。然后maven插件会自动拾取它们,因为它符合约定。因此,将applicationContext.xml移动到src / main / webapp / WEB-INF

另一种选择是按照documentation

中的描述配置webResources

对于第二个问题,您可以查看PropertyPlaceHolderConfigurer。你只需要纠正这条路径。