Обновлять зависимости в хост-режиме в GWT
У меня есть веб-приложение GWT, разделенное на два проекта Maven, где один является зависимостью от другого. Каждый раз, когда я изменяю что-то в зависимости и запускаю webapp в размещенном режиме, мне приходится перестраивать подпроект и перезапускать размещенный режим, чтобы изменения вступили в силу. Это занимает много времени, поэтому я хотел бы спросить вас, есть ли способ сделать GWT, используя "живую" версию зависимости?
3 ответа
Есть 2 случая:
для серверного кода, при условии, что вы используете встроенный сервер DevMode, достаточно перестроить приложение и затем обновить сервер
для клиентского кода, AFAICT, вы должны использовать исходные и выходные каталоги модуля зависимостей, а не JAR, содержащий их (GWT загрузит исходный код из пути к классам, но, очевидно, он увидит измененные источники только в том случае, если он придет из папки, а не из JAR; по крайней мере, это то, что я нашел в своих тестах). Это идет вразрез с Maven Way™, но пока единственным решением является использование специального профиля, который будет импортировать источники проекта зависимостей в качестве источников проекта, который вы запускаете. Вы можете увидеть примеры этого в моих архетипах.
Там на самом деле ошибка открыта для
gwt-maven-plugin
MGWT-332, чтобы сделать это автоматически при запуске сборки реактора. Я также размышлял о том, что действительно нужно для предстоящего официальногоgwt-maven-plugin
(переписано с нуля, независимо от плагина CodeHaus Mojo).Если ваша зависимость зависит не от сборки реактора, то вы сами по себе: вы решили сделать его совершенно отличным, вот как он будет себя вести: вам придется выпускать его (даже снимок) каждый раз Вы вносите в него изменения и используете новую версию в своем приложении (что означает перезапуск DevMode).
Это можно обойти, запустив DevMode самостоятельно, без помощи
gwt-maven-plugin
, Тем не менее, вы можете самостоятельно управлять classpath (используя плагин Google для Eclipse, я полагаю, вы могли бы просто отредактировать конфигурацию запуска, чтобы добавить исходные папки вашего проекта зависимостей в classpath, перед classpath, предоставленным Maven, что ссылка на банку).
Поскольку сборка GWT занимает много времени, мы вложили немного денег в лицензию JRebel. У нас есть два отдельных проекта Eclipse для нашего бэкэнда и нашего GWT. JRebel автоматически перезагружает классы, и мне никогда не нужно перезагружать мой локальный сервер во время написания кода. Это оказалось прекрасной возможностью сэкономить время. Определенно стоит инвестиций.
Удалите зависимый файл jar другого приложения из основной папки lib приложения в webapp. Затем Eclipse должен разрешить зависимость, используя другой проект в рабочей области, если вы добавили его в основной путь к классу приложения.