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

Java Maven正在将applicationContext.xml从src/main/resources复制到target/myproject/WEB-INF,java,spring,maven,applicationcontext,Java,Spring,Maven,Applicationcontext,目前,我认为默认情况下,它会复制到 target/myproject/WEB-INF/classes 因此,在部署时,它不会拾取上下文 另外,我想引用一个特定于服务器的配置文件database.properties,我想把它放在tomcat/conf中,然后在applicationContext.xml中引用它,我该怎么做 此外,我的印象是,这是一个相当标准和体面的方式来设置事情-请纠正我,如果我错了 编辑 对于特定于服务器的配置文件,我使用此用户 <context:property-p

目前,我认为默认情况下,它会复制到

target/myproject/WEB-INF/classes
因此,在部署时,它不会拾取上下文

另外,我想引用一个特定于服务器的配置文件database.properties,我想把它放在tomcat/conf中,然后在applicationContext.xml中引用它,我该怎么做

此外,我的印象是,这是一个相当标准和体面的方式来设置事情-请纠正我,如果我错了

编辑 对于特定于服务器的配置文件,我使用此用户

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

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

另一个选项是按照中所述配置webResources


关于第二个问题,你可以看一个例子。您只需获得正确的路径。

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

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

上下文配置位置
类路径:applicationContext.xml
这比配置Maven将其复制到
WEB-INF
要容易得多


关于第二个问题,您可以配置
propertyplaceholderconfigure
从文件系统加载
.properties
文件。

我认为约定是将其放在src/main/resources中,对于测试,我可以将另一个放在src/test/resources中,这是jar模块的约定,即使这样,它们也被放在类中,因为这决定了jar文件的内容。对于应该在webapp结构中而不是类中结束的webapp资源,您将它们放在src/main/webapp中,并将它们拉到与.war文件根匹配的目录结构中。因此src/main/webapp/WEB-INF/spring/config/context.xml将在.war文件中的WEB-INF/spring/config/context.xml中结束。我已经更新了我的答案,并添加了指向该文档的链接。