其他分享
首页 > 其他分享> > Maven 3个不同的配置文件 – Spring propertyPlaceHolderConfig不能使用pom文件中的值

Maven 3个不同的配置文件 – Spring propertyPlaceHolderConfig不能使用pom文件中的值

作者:互联网

我在使用maven 3时遇到了一些问题并且正在加载正确的.properties文件.

我想要实现的目标如下:使用mvn -Plocal我想加载setting-local.properties,如果使用prod运行我想加载settings-prod.properties.

它的工作原理是使用mvn -Denv = local,但是当我尝试使用-Plocal时,变量没有被加载(设置 – ${env} .properties不存在).

我的pom.xml:

<profiles>
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <env>local</env>
        </properties>
    </profile>
</profiles>

在我的applicationcontext中,我想加载env-variable:

<bean id="propertyPlaceholderConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
                <list>
                        <value>classpath:settings-${env}.properties
                        </value>
                </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders">
                <value>true</value>
        </property>
</bean>

那么问题是什么,它不应该双向工作吗?

解决方法:

我认为你将Spring的PropertyPlaceholderConfigurerMaven’s Filtering机制混为一谈.这些是相似但完全独立的机制(但它们可以一起使用).

> Spring的PropertyPlaceholderConfigurer允许您从属性文件中获取值,以便在Spring应用程序上下文中使用.
> Maven的过滤允许您使用Maven属性和环境中的值替换文本文件(包括属性文件)中的值.

你可以将它们组合起来然后它变成一个两阶段的过程.您的Maven构建使用过滤将值放在属性文件中,然后Spring可以读取它.困惑? (我是)

标签:spring,maven-3
来源: https://codeday.me/bug/20190729/1576819.html