Java Webapp: поймать 22 относительно сборок dev / prod для .war - PullRequest
2 голосов
/ 28 июля 2010

Что-то, что я просто не получаю в отношении конфигурационных файлов и сред разработки или разработки.

Если у вас есть .war и вы хотите использовать тот же .war в dev и prod (потому что смысл среды dev заключается в том, чтобы проверить, что .war работает нормально, поэтому вы не хотите проверять, что .war и затем разверните другой .war правильно !?), тогда куда вы помещаете файл конфигурации, сообщающий, является ли ваша среда разработчиком или продуктом?

Скажите локально, что япользователь / Users / Alex (в OS X) тестирует .war , а затем, если все выглядит нормально, я хочу развернуть на машине Linux в / home / tomcat / repertory.

Где и как я могу получить доступ к файлу конфигурации, сообщающему, что это среда разработки или разработки?

Не говорите мне, что люди строят дваотличается .war для сборки dev и prod правильно !?Это как бы полностью победило цель ...

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

Это распространенная проблема, которая имеет несколько решений.

То, что большинство людей (по моему опыту), похоже, использует, это наличие сценария сборки, который генерирует файл .war.Сценарий сборки может быть Ant или Maven, это на самом деле не имеет значения - но для настройки Ant потребуется немного больше работы.

Затем у вас есть файл основных свойств (или что-то в этом роде), который содержитвсе ваши свойства для доступа к базе данных и т. д. во всех ваших различных средах.Затем, когда вы запускаете свой скрипт сборки, он просто устанавливает свойства в нужных местах, и у вас есть то, что по сути является одним и тем же .war-файлом - просто сконфигурированным для разных сред.коробка "- посмотрите на профилей .

1 голос
/ 28 июля 2010

Вам не нужно перестраивать WAR для перехода из одной среды в другую.

Конечно, вы можете перенести конфигурацию в базу данных, но это не сильно поможет в Spring.

Еще одна идея - создать файл конфигурации для каждой среды с именем, включенным в имена (например, «config-devl.xml», «config-test.xml», «config-prod.xml»). , Имейте переменную окружения, установленную для каждой среды, которая соответствует значению постфикса. Попросите ваше приложение прочитать файлы конфигурации со значением postfix, установленным переменной среды при запуске.

1 голос
/ 28 июля 2010

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

Получить конфигурацию можно несколькими способами:

  • Поместите конфигурацию в$ CATALINA_HOME / lib или аналогичный файл, где он будет загружен в classpath сервера приложений.

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

  • Создайте магию JNDI (как правило, это слишком сложно для меня, поэтому я держусь подальше от нее).

Чтобы иметь больше уверенности в вашемРазвертывание вы можете использовать инструмент развертывания, как Capistrano .Часто разработчики проверяют правильность конфигурации перед развертыванием конфигурации prod (очевидно, она еще не тестировалась), чтобы убедиться, что приложение будет работать.

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