我在 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 文件,看到第二行的location值已经解析为我的笔记本电脑的${user.home}。我期待它在创建 Spring Context 时发生。我们正在构建服务器上构建 war 文件,然后将其传输到测试/生产机器,因此当我们有不同的 ${user.home} 值时会给我们带来麻烦。我做错了什么?这是预期的行为还是我有其他一些 Maven 插件干扰(我需要检查)?
1 回答
叮当猫咪
TA贡献1776条经验 获得超12个赞
问题是 Maven 资源插件处理 src/main/recources 下的文件并在构建阶段评估 ${user.home} 值。(感谢 @BackSlash)
所以我在 maven 资源插件中禁用了对 PropertyContext 的过滤,它开始按预期运行。
添加回答
举报
0/150
提交
取消