Создание веб-приложений для войны "Maven Way"

Мое веб-приложение состоит в основном из двух артефактов: java-server.jar и js-client.war. Оба агрегируются / накладываются и получают дополнительные файлы свойств для целевой среды. Наконец, я получил военный файл.

Некоторые военные файлы развертываются с помощью tomcat: некоторые развертываются с помощью скрипта, но это не должно иметь значения на данном этапе.

Есть несколько вещей, которые мне не нравятся в моем подходе:

  • Сервер и клиент освобождаются с помощью плагина maven-release-plugin, а конечное веб-приложение - нет.
  • Просто имея окончательный файл войны, я не могу определить, для какого сервера он был построен.
  • Обычно мне требуется несколько комбинаций клиент / сервер: пока я собираю бета-сервер со стабильными версиями, сервер ночной сборки должен работать с последними снимками.

Как вы поддерживаете, выпускаете и внедряете (в репозиторий Maven) стабильные / бета-версии веб-приложений? Как вы поддерживаете конкретные настройки конфигурации целевого сервера? Как вы храните разные версии? У тебя много филиалов?

Спасибо Ян

3 ответа

То, что я делаю, использует дополнительные шаги сборки Jenven maven для выполнения

tomcat:deploy

после каждой сборки. С правильным профилем maven, который указывает сборки на наш сервер разработки. Затем, когда мы хотим перейти к подготовке, мы используем плагин релиза maven (снова с Дженкинсом), чтобы создать релиз с номером версии, который не является снимком. Скажем, мы выпустим 2.0beta3 для постановки. Это сделано с чем-то вроде:

tomcat:deploy -P staging-deploy

Затем профиль гарантирует, что мы отправим на промежуточный сервер вместо сервера dev запись pom, например:

    <profile>
        <id>deploy-staging</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tomcat-maven-plugin</artifactId>
                    <configuration>
                        <server>tomcat-staging</server>
                        <url>http://tomcat-staging.internal:${tomcat-staging.port}/manager/text</url>
                        <path>${tomcat.path}</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

Наконец, переход от постановки к жизни осуществляется полностью за пределами Maven и Jenkins. Я просто не доверяю Maven, чтобы не сломаться:-)

Я могу рекомендовать использовать сервер сборки, такой как Hudson. Имеет поддержку maven и rcs. Вы можете указать, например, какую ветку вашего исходного кода построить и какие цели maven выполнить.

Мы также используем Hudson для развертывания сборок на наших веб-серверах.

Моя ситуация не так сложна, как ваша, поэтому я могу ответить только на этот вопрос:

Как вы поддерживаете конкретные настройки конфигурации целевого сервера?

Я пытаюсь вывести всю конфигурацию наружу, чтобы развернуть точно такой же файл WAR в stage / prod. Для этого я использую Spring контекст: свойство-заполнитель тега. В WAR есть файлы свойств по умолчанию, которые переопределяются свойствами в /etc/app/*.properties (c:/etc/app/*. Properties в Windows).

Что касается фактического развертывания, я в настоящее время загружаю файл WAR вручную, но планирую автоматизировать это в ближайшем будущем.

Другие вопросы по тегам