Кто-нибудь знает плагин "горячего развертывания" 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