Maven: разные файлы свойств для разных профилей - PullRequest
5 голосов
/ 30 ноября 2011

Я использую разные профили maven для развертывания моего приложения в разных средах.(С помощью weblogic-maven-plugin, но я думаю, что это не важно)

В приложении я использую Spring Web Services.Теперь я хотел бы изменить конечную точку в зависимости от среды.(Конечная точка определена в приложении SpringContext.xml)

Моя идея - прочитать значение из файла свойств.Этот файл свойств будет записан (или скопирован) во время фазы пакета Mavens.

Это хорошая идея?

Если да: как мне создать это свойство (или весь файл) с помощью maven.

Если нет: Какой подход лучше для решения этой проблемы?

1 Ответ

7 голосов
/ 30 ноября 2011

Я достиг чего-то похожего, но вместо переменных в файлах pom.xml в файлах свойств. Поэтому в моих файлах свойств есть переменные, которые будут изменены Maven в упаковке.

Сначала я определил эти переменные в разделе профилей pom:

<profiles>
    <profile>
        <id>dev</id>
        <activation><activeByDefault>true</activeByDefault></activation>
        <properties>
            <props.debug>true</props.debug>
            <props.email>false</props.email>
                            <what.ever.you.want>value for dev profile</what.ever.you.want>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <props.debug>false</props.debug>
            <props.email>true</props.email>
            <what.ever.you.want>value for prod profile</what.ever.you.want>
        </properties>
    </profile>
</profiles>

Затем активировал maven обработку и фильтрацию ресурсов. Итак, в вашем разделе сборки:

        <build>
                    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources>
             </build>

Наконец, я могу иметь "vars" в моих файлах свойств, файлах конфигурации. Например, в моем проекте у меня есть файл email.properties для настройки отправки электронных писем. Свойство «sendEmail» указывает, нужно ли мне отправлять письмо (профиль prod) или распечатывать его в отладке (профиль dev) При использовании dev profile эта переменная будет иметь значение false, тогда как при использовании профиля profile свойство будет иметь истинное значение.

sendEmail=${props.email}

Это работает не только с файлами свойств, но и с XML (я думаю, с каждым текстовым файлом)

Контрасы:

  • Часть конфигурации разбросана по файлу pom
  • Maven упаковка длится дольше (потому что фильтрация)
  • Размещение переменных в XML-файлах делает их синтаксически ошибочными (потому что символ $)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...