2015-10-23 4 views
1

У меня есть проект vaadin с maven и некоторыми свойствами. Свойства включают в себя пути к файлам, имена файлов и т. Д.Процесс сборки/развертывания Maven во время выполнения

Я также создал профили maven для разработки и производства. Для разработки мое приложение работает с причалом, в процессе производства оно должно работать с tomcat 8. (моя цель - файл .WAR)

Все работает нормально, но теперь мне нужно подготовиться к сборке и «пойти жить". Поэтому мне нужно создать разные свойства, один для разработки и один для производства.

Но приложение должно загрузить нужные свойства на основе среды, верно? Поэтому, если локальная машина использует свойство a, еще используйте свойство B.

Какова наилучшая практика в этом случае? Что я могу сделать с моими свойствами и файлами pom? Как должен выглядеть процесс сборки?

Надеюсь, я смог бы объяснить это ясно, иначе я поделюсь дополнительной информацией.

Любые идеи были бы полезны. Большое спасибо.

PS. Извините, но это моя первая сборка!

ответ

1

Лучшим подходом является внешний вид вашей конфигурации вне вашего WAR-файла в файле .properties или в аналогичном формате, а затем пусть ваше приложение заберет такой файл при загрузке. Общие подходы для обнаружения файла конфигурации являются:

  • предопределенное место в CLASSPATH приложения
  • предопределенное место в файловой системе
  • местоположение (или CLASSPATH или FS), заданный параметр запуска (например, .: -Dmyapp.config=...
  • JNDI свойство среды, которая указывает на правильное местоположение
  • все вышеперечисленное вместе, в chain of responsibility моды

В зависимости от модели развертывания сохранение свойств в пределах pom.xml может оказаться неприемлемым, поскольку вы обычно не хотите, например, там есть пароль базы данных производства или где-либо в вашем исходном коде.

Свойства для локальной среды действительно могут быть помещены в pom.xml, а затем вы можете использовать filtering для заполнения им файла свойств и загрузки такого файла из приложения. Тот же подход может использоваться вместе с profiles для задания более чем одной среды.

Затем, если вам необходимо предоставить правильные свойства во всех средах, которые вы используете (например, если вы выкатываете всю улицу DTAP), я бы рекомендовал вам ознакомиться с некоторыми менеджерами по настройке/конфигурации, такими как как Ansible, Salt, Chef, Puppet и тому подобное.

+0

Моего приложением не имеет базы данных, так что нет ни одного пользователя/пароля. Я не уверен, что понимаю ваше предложение о свойствах внешнего вида. У меня уже есть разные файлы .properties. Это то, что вы имели ввиду? - – NVD

+0

Да, вы не указали, что ваша конфигурация находится за пределами 'pom.xml', поэтому я счел нужным упомянуть внешние файлы свойств. Затем я предположил, что ваш процесс * build * не должен нести ответственность за создание свойств для среды, отличной от локальной. – skuro

+0

спасибо, я постараюсь ... – NVD

0

С помощью Maven Resource Plugin вы можете включать/исключать ресурсы на основе активного профиля.

Или вы могли бы сделать это как часть процесса упаковки с Maven Assembly Plugin

Смежные вопросы