простой способ создания патча для развернутого приложения Grails - PullRequest
4 голосов
/ 23 ноября 2010

У меня есть развернутые приложения Grails на tomcat6 на моем клиент-серверном компьютере, но приложение все еще нуждается во многих исправлениях, поэтому каждую ошибку, обнаруженную или отсутствующую на клиентском компьютере, я создаю исправлением и доставляю клиенту через ftp на .tarФайл .gz, который будет заменен на развернутую папку.

Я не могу отправить полностью файлы .war, потому что приложения большие (~ 80M), поэтому отправка файлов изменений .class - это единственный вариант, который у меня есть.но процесс создания патча занимает слишком много времени , особенно при перестройте проект , очистите целевую папку и начните компилировать все файлы в проекте.после этого я выполняю поиск различных файлов .class, используя приложения для сравнения папок в новой папке target / classes по сравнению со старой папкой target / classes, и отправляю ее клиенту.

военный процесс созданиядействительно потребовалось много времени, чтобы исправить незначительную вещь, есть ли способ более простой, чтобы получить другой .class для скомпилированного кода ?потому что мне нужно создать патч на 2-3 дня каждый для исправления мелочей, о которых обычно сообщал клиент.

спасибо,

Ответы [ 5 ]

2 голосов
/ 24 ноября 2010

Мы создаем файл WAR, затем распаковываем его локально и синхронизируем локально развернутую WAR (используя RSync ) с развернутой WAR на сервере (используя Cygwin на компьютерах-разработчиках Windows).Протокол RSync очень эффективен, поэтому развертывание через Интернет происходит очень быстро, но создание файла WAR все еще занимает много времени :(

У нас есть сценарии как на компьютерах разработчиков, так и на сервере, поэтомунаш механизм развертывания довольно безболезненный, если вы не учитываете время сборки WAR. Кроме того, мы не выполняем rsync непосредственно в производственный каталог, мы ждем, пока rsync не будет завершен, и затем запускаем скрипт на сервере, который также создает резервную копию предыдущей рабочей версиина случай, если что-то пойдет не так.

2 голосов
/ 24 ноября 2010

Все, что мы делаем, это чистая

grails clean

Затем создаем войну без банок

grails war --nojars

Загрузка тогда составляет 5 МБ (что занимает некоторое время), но это быстрее, чем 50 /80MB.Если мы добавим плагин tc, тогда нам нужно будет выполнить полную загрузку / сборку.

Затем мы разархивируем войну поверх взорвавшейся войны и перезапускаем tomcat / jetty / etc ..

Надеюсь, это поможет.

0 голосов
/ 24 ноября 2010

Другой альтернативой может быть использование управления исходным кодом (для этого отлично подойдет DVCS, например, mercurial или git), и пусть клиент извлекает версию только для чтения для любой ветви вашего кода, которую вы хотите передать.Затем создайте сценарий сборки (gradle / ant / gant), который может загрузить / установить grails, скомпилировать файл рабочей войны и развернуть его.

0 голосов
/ 23 ноября 2010

Технически, есть другой способ изменить код во время выполнения: это Groovy, так что вы можете переназначать методы класса во время выполнения, как

MyDomainClass.metaclass.'static'.'method' = { some closure; }

Хотя это очень опасно и не защищено от перезапуска.

Вы можете сделать это, скажем, в Groovy Web Console . Это еще одно серьезное нарушение безопасности, связанное с раскрытием веб-консоли.

Я бы посоветовал вам проверить свои классы в системе управления версиями и создать на целевой машине / в целевой сети. Трафик SVN сжат, поэтому доставка не займет много времени.

0 голосов
/ 23 ноября 2010

Нет способа создать патч для приложения Grails.Если человек, которому вы доставляете приложение, готов поместить библиотеки в каталог общих библиотек tomcat, см. эту ссылку , чтобы узнать, как уменьшить размер файла war до пары мегабайт вместо 80.

...