我正在Web应用程序的Spring 3.2.14.RELEASE中使用PropertyPlaceholderConfigurer。我的PropertyContext.xml文件中包含以下部分。
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
<property name="locations">
<list>
<value>classpath:globalDefinitions.properties</value>
<value>file:${user.home}/myapplication.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true"/>
</bean>
我跑步时
mvn clean install -DskipTests=true
我打开生成的war文件,发现第二行的 locations 值已经解析为笔记本电脑的 $ {user.home} 。 我期望在创建Spring Context时会发生这种情况。
我们要在构建服务器上构建war文件,然后将其传输到Test / Prod计算机,以便在我们使用不同的$ {user.home}值时给我们带来麻烦。
我在做什么错?这是预期的行为还是我有其他需要干扰的maven插件?
答案 0 :(得分:0)
问题是Maven资源插件,用于处理src / main / recources下的文件并在构建阶段评估$ {user.home}的值。(感谢@BackSlash)
因此我已禁用了Maven资源插件中对PropertyContext的过滤,并且该过滤器开始按预期方式运行。