Maven 3 различных профиля - Spring propertyPlaceHolderConfig не может использовать значение из файла pom - PullRequest
3 голосов
/ 13 сентября 2011

У меня возникли некоторые проблемы с Maven 3 и я могу загрузить нужный файл .properties.

Я хочу добиться следующего: С помощью mvn -Plocal я хочу загрузить локальную настройку.свойств, и если он запускается с помощью 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>

В моем приложении контекста я хочу загрузить переменную env:

<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>

Так в чем же проблема, разве это не должно работать в обе стороны?

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011

Я думаю, что вы путаете PropertyPlaceholderConfigurer Spring * с фильтром Maven .Это похожие, но совершенно разные механизмы (но они могут использоваться вместе).

  • PropertyPlaceholderConfigurer Spring позволяет вам получать значения из файла свойств для использования внутри контекста приложения Spring.

  • Фильтрация Maven позволяет заменять значения в текстовых файлах (включая файлы свойств) на значения из ваших свойств и среды Maven.

Вы можете комбинировать их, нотогда это становится двухэтапным процессом.Ваша сборка Maven использует фильтрацию для помещения значений в файлы свойств, а затем, в свою очередь, это может быть прочитано Spring. Confused?(Я)

2 голосов
/ 13 сентября 2011

Свойства проекта Maven не являются Системными свойствами, поэтому это не будет работать из коробки.

Одна вещь, которую вы можете сделать, это использовать Maven Resource Filtering для замены ключей свойств в вашем файле контекста Spring. Или, что еще лучше, есть файл свойств, который вы фильтруете и ссылаетесь на него из Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...