猿问

Spring 系统属性过早解决

我在 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 插件干扰(我需要检查)?


侃侃无极
浏览 198回答 1
1回答

叮当猫咪

问题是 Maven 资源插件处理 src/main/recources 下的文件并在构建阶段评估 ${user.home} 值。(感谢 @BackSlash)所以我在 maven 资源插件中禁用了对 PropertyContext 的过滤,它开始按预期运行。
随时随地看视频慕课网APP

相关分类

Java
我要回答