Режим Super Dev в GWT

Я новичок в гвт. Я не знаю, как запустить режим Super Dev. Мне нужно подробное объяснение шаг за шагом.

Я попытался отредактировать файл gwt.xml, добавив

<add-linker name="xsiframe"/>
  <set-configuration-property name="devModeRedirectEnabled" value="true"/>
  <set-property name="compiler.useSourceMaps" value="true" />

но я не могу получить представление об этом.


person nmkyuppie    schedule 20.08.2013    source источник


Ответы (4)


Следуйте этим шагам, вы обязательно найдете решение.

  1. Загрузите GWT 2.5 RC2 и поместите его куда-нибудь... Я поместил его в свой каталог eclipse/plugins. ссылка

  2. В Eclipse добавьте GWT 2.5 на экран Project -> Properties -> Google -> Web Toolkit -> Configure SDKs и выберите версию 2.5, которую вы добавили в каталог на шаге выше.

  3. Щелкните правой кнопкой мыши проект в Eclipse, перейдите в его окно «Конфигурации запуска» и создайте новое «Java-приложение», назовите его что-то вроде «GWT Super Dev Mode».

  4. Находясь в окне Run Configurations, сделайте следующее:

    1. Установите проект на основе имени вашего проекта и введите основной класс как com.google.gwt.dev.codeserver.CodeServer.

    2. На Classpath tab нажмите user Entries, затем нажмите Add External JARs, перейдите в каталог GWT 2.5, найдите gwt-codeserver.jar и нажмите "Открыть" (и другие внешние библиотеки).

    3. На вкладке «Аргументы» добавьте -src src/ *SOURCE PATH OF YOUR PROJECT* к аргументам программы и добавьте необязательные -Xmx1024m к аргументам виртуальной машины.

    4. Нажмите «Применить», затем запустите проект.

  5. После этого вы получите URL-адрес вида localhost:9876/.

  6. Перейдите по этому URL-адресу и добавьте в закладки Dev Mode ON и Dev MOde Off, затем запустите свой код и удалите суффикс gwt.codesvr=127.00.1:9997 в URL-адресе. Теперь нажмите Dev Mode ON...

Надеюсь, вы получите решение...

person Stuart    schedule 21.08.2013
comment
Почему я получаю, что рабочий каталог не существует? - person EMM; 22.06.2014
comment
Я получаю Использование: должен быть предоставлен хотя бы один модуль - person Ted Gulesserian; 19.10.2014
comment
Я устранил следующую ошибку: Использование: должен быть предоставлен хотя бы один модуль Путем предоставления аргумента CodeServer, у которого был полный пакет, в котором он находился. например com.somepackage.testgwt.TestGWT, где TestGWT — это ссылка на мой файл TestGWT.gwt.xml. - person Ted Gulesserian; 19.10.2014

ОБНОВЛЕНИЕ: начиная с GWT 2.7, DevMode по умолчанию автоматически использует режим Super Dev Mode, поэтому вам просто нужно запустить DevMode, как вы это делали ранее, и приложение будет (пере)автоматически скомпилировано на странице ( re)load.
Одно отличие состоит в том, что создается специальный файл .nocache.js, поэтому вы должны убедиться, что этот конкретный файл загружен браузером; для отладки удаленного сервера (как вы могли делать ранее с DevMode, работающим с -noserver), вам придется использовать букмарклеты, как описано ниже.

Для запуска в Super Dev Mode необходимо пройти 2 подготовительных шага:

  1. Режим Super Dev работает только с компоновщиком xsiframe, поэтому убедитесь, что в вашем .gwt.xml также есть следующая строка:

    <add-linker name="xsiframe" />
    

    Этот компоновщик безопасен для производственного использования (Google использует его везде, слегка настраивая), поэтому не стесняйтесь включать его для всех своих проектов (он сочетает в себе лучшее из компоновщика std (по умолчанию) и компоновщика xs без их недостатков. ).

    Примечание. этот компоновщик будет использоваться по умолчанию в версии 2.7.

    Если вы используете версию GWT до 2.6.0, вам также необходимо включить режим Super Dev в вашем .gwt.xml:

    <set-configuration-property name="devModeRedirectEnabled" value="true" />
    

    В противном случае, если вы собираетесь использовать режим Super Dev с URL-адресом, отличным от 127.0.0.1 или localhost, вам придется внести хост в белый список. Это делается с помощью регулярного выражения, например:

    <set-configuration-property name="devModeUrlWhitelistRegexp" value="http://(mymachinename|192\.168\.5\.151)(:\d+)?/.*" />
    

    См. https://stackoverflow.com/a/21938574/116472.

  2. скомпилируйте и разверните приложение на ближайшем к вам веб-сервере (если вы использовали файл .gwt.xml, специфичный для режима Super Dev, обязательно скомпилируйте этот модуль: для этого этапа компиляции необходимы компоновщик xsiframe и свойство devModeRedirectEnabled!)

    Если вы используете GWT-RPC, задайте для системного свойства gwt.codeserver.port порт, на котором вы будете запускать режим Super Dev (по умолчанию 9876), чтобы ваш сервер мог загружать политики сериализации RPC прямо из режима Super Dev.
    Если вы их запускаете на разных машинах вам придется переопределить getCodeServerPolicyUrl во всех ваших RemoteServiceServlet. Однако учтите последствия для безопасности, как указано в javadoc

Как только это будет сделано, вы можете начать сеанс Super Dev Mode:

  1. Запустите com.google.gwt.dev.codeserver.CodeServer с тем же путем к классам, с которым вы запускаете DevMode (т. е. gwt-user.jar, gwt-dev.jar и все ваши зависимости на стороне клиента: например, GXT, GIN+Guice, GWTEventBinder и т. д.), но добавив gwt-codeserver.jar; и передавая имя вашего модуля в качестве аргумента.

    Он начнется с компиляции вашего модуля, чтобы проверить, действительно ли он может быть скомпилирован; вы можете пропустить этот шаг, передав -noprecompile в качестве аргумента.

    Если вы никогда не использовали Super Dev Mode, перейдите на http://localhost:9876 и добавьте ссылки Dev Mode On и Dev Mode Off в свои закладки (перетащите их на панель закладок).

    Примечание: если вы используете Maven, вы должны иметь возможность использовать mvn gwt:run-codeserver (примечание: в выпусках плагина до 2.6.0 есть ошибка, из-за которой вам фактически нужно запускать mvn process-classes gwt:run-codeserver; это исправлено в 2.6.1).

  2. Откройте свое приложение в браузере и нажмите на букмарклет Включить режим разработки. Нажмите кнопку Скомпилировать в открывшемся всплывающем окне. Он должен обновить страницу и загрузить JS с CodeServer, а не с вашего сервера. Инструменты разработки вашего браузера также должны загружать SourceMaps, чтобы вы могли просматривать и отлаживать (шаг за шагом) свой Java-код.

  3. Если вы хотите протестировать изменения, внесенные в код, снова нажмите на букмарклет Включить режим разработки. В отличие от DevMode, обновление страницы не приведет к запуску нового кода; код должен быть сначала перекомпилирован, и это делается при нажатии кнопки Компилировать после букмарклета Включить режим разработки (примечание: вы также можете напрямую добавить в закладки Компилировать , чтобы сэкономить клик, но обратите внимание, что она привязана к вашему модулю, поэтому вам потребуется несколько закладок, если вы работаете с несколькими модулями).

  4. Когда вы закончите, нажмите Выключить режим разработки, чтобы вернуться в рабочий режим, а затем завершите процесс CodeServer (CtrlC в консоли должно работать).

Официальная документация по адресу http://www.gwtproject.org/articles/superdevmode.html.
См. также http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/ для получения дополнительной информации о том, как на самом деле работает Super Dev Mode.

person Thomas Broyer    schedule 20.08.2013
comment
Будет ли поддержка отладки в eclipse или IntelliJ? (Я знаю, что это может быть похоже на обращение к оракулу) - person Christian Kuetbach; 20.08.2013
comment
В отношении предупреждения на шаге № 1, как я могу сохранить два файла * .gwt.xml и переключить их для режима Super Dev Mode по сравнению с производством с использованием Maven? - person Thad; 20.08.2013
comment
@Thad: это не «Путь Maven™», но вы можете использовать профили; см. github.com/tbroyer/gwt-maven-archetypes/blob/ для примера. Или вы можете просто использовать свойство и переопределить его значение из командной строки. - person Thomas Broyer; 21.08.2013
comment
@ Тад, предупреждение спорно. Его безопасно использовать в prod, и теперь он включен по умолчанию в GWT 2.6.0-rc4 и выше. - person Thomas Broyer; 12.01.2014
comment
@ThomasBroyer, а если бы я выполнил все эти шаги, но я получаю ошибку загрузки браузера, он не может найти * .nocache.js (я ничего не менял, он отлично работает в режиме хостинга) - person Adnane.T; 27.02.2014

Я написал простое пошаговое руководство по отладке проекта hello world с помощью super-dev-mode Здесь.

Прочитав пошаговое руководство со скриншотами, вы не сможете его пропустить.

введите здесь описание изображения

Кроме того, вы можете прочитать о технологии -

GWT SuperDevMode — сообщение Рэя Кромвеля и Руководство по GWT для разработчиков

SourceMaps — GWT и Sourcemaps и Исходные карты HTML5

person appbootup    schedule 20.08.2013
comment
Когда код останавливается на точке останова, я могу только смотреть javascript. Можно ли отлаживать java-код (добавлять часы для java-переменной, прежде чем она будет переведена в javascript)? - person kirilv; 30.01.2015

Посмотрите это видео, может поможет

http://jeff-davis.blogspot.fr/2012/07/setting-up-gwt-25s-superdevmode.html

person Ronan Quillevere    schedule 28.02.2014