Как выполнить горячее развертывание источников с помощью gradle в tomcat7?

Кто-нибудь знает плагин "горячего развертывания" Gradle (или промежуточное ПО в виде сценария оболочки), который копирует файлы из исходной папки непосредственно в папку проекта в каталоге веб-приложений tomcat (а не встроенный сервер, например gretty или плагин gradle tomcat ; версия7, независимая от среды)?

В конце я хочу реализовать интеллектуальный рабочий процесс разработки для (повторного, не-) развертывания веб-приложения Java во время создания кода. Я ищу что-то вроде задач grunt watch.

Сценарий: веб-приложение Java с автономным исполняемым файлом jar в папке WEB-INF/lib.

  • зарегистрировать задачи наблюдателя сверху на задаче gradle
  • исходный код java изменен
  • кот остановился
  • удалить файл jar в папке WEB-INF/lib
  • развернуть jar-файл
  • скопировать jar в папку WEB-INF/lib (удалить все файлы журнала)
  • начать кот

Перезапуск Tomcat не требуется, если статические источники изменены (например, JSP, JS и т. д.).

Решение

Я думал о наших рабочих практиках в офисе. Мы с коллегами программируем на компьютерах с Windows и используем конфигурацию карты ключей в IDEA для запуска и остановки нашего локально установленного Tomcat.

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

CATALINA_HOME = C:\Program Files\apache-tomcat-7.0.56

Я определяю задачу развертывания, которая копирует скомпилированный военный файл в папку веб-приложений ((повторно) запускает Tomcat вручную через IEDA).

task deploy(type: Copy) {
    def WEBAPPS_HOME = System.getenv()['CATALINA_HOME'] + '/webapps'
    from 'build/libs/app.war' into WEBAPPS_HOME
    dependsOn war
}

Никому не нужно менять путь Tomcat внутри файла build.gradle или нет дополнительного файла user.config, который игнорируется git. Но мне не нравится ручная обработка Tomcat, а работать с переменными среды на Mac необычно.

Итак, я решил поискать встроенный сервер Tomcat как плагин Gradle Cargo для локальной разработки. Это рекомендуется Бенджамином Мушко (инженером Gradleware) на Как использовать локальный tomcat?... и он описывает различия между плагином Cargo или Tomcat....

Настройка этого плагина довольно проста. Мне не нужно объяснять.

Никому не нужно устанавливать собственный Tomcat, и все работают с одной и той же версией сервера.

Для нашей ночной сборки я использую мощь оболочки Gradle в качестве конфигурации задачи Jenkins. Я выполняю пакетную команду wintods.

cd "%WORKSPACE%\app"
gradlew.bat clean build

person Ronny Springer    schedule 23.12.2014    source источник


Ответы (1)


Я использую Jenkins для управления развертыванием наших приложений.

Существует ряд плагинов, которые помогают с такими задачами, а также имеют возможность писать собственные сценарии.

Jenkins легко настраивается, поэтому вы можете адаптировать его к своим потребностям.

URL-адрес Jenkins

person Dave    schedule 23.12.2014
comment
Конечно, ваша идея вполне хороша для релиза или ночной сборки. - person Ronny Springer; 06.01.2015