Статьи

Запуск размещенного режима в библиотеках GWT (при использовании Maven)


Ранее в этом году я писал о
модульности приложений GWT с GWT-Maven . Перенесемся на 8 месяцев, и я все еще работаю с GWT и использую эту же технику. Однако на этот раз я работаю с
плагином
Maven GWT от Codehaus. В своем последнем посте я написал:

Результаты модульности вашего приложения являются полезными (совместно используемый код) и вредными (вы должны установить mwn-core при каждом изменении общих классов). Если вам известен способ настройки подключаемого модуля gwt-maven для чтения исходных текстов как из gwt-core, так и из gwt-webapp в режиме хостинга, я хотел бы услышать об этом.

Хорошей новостью является то, что я нашел решение для этого, используя плагин Builder Helper Maven . Совет по производительности подключаемого модуля GWT Maven для настройки нескольких проектов содержит больше информации о том, как это настроить (примечание: мы используем IntelliJ и Eclipse в моем проекте и не нуждались в настройке этого в профиле).

Все было в порядке с этой конфигурацией, пока я не захотел иметь возможность использовать хост-режим для разработки / тестирования всего в моей библиотеке, прежде чем включать его в мой основной проект. К счастью, вы все равно можете запустить mvn gwt: run в проекте JAR. Однако, когда вы настраиваете свой pom.xml так, чтобы источники включались в ваш JAR-файл, вы сталкиваетесь с проблемой: ваши * .java файлы будут скопированы в war / WEB-INF / classes, а в режиме hosted эти файлы будут использоваться вместо исходного те, которые вы редактируете в src / main / java .

Чтобы решить эту проблему, я изменил свой pom.xml, чтобы сделать две вещи:

  • Копируйте ресурсы только непосредственно перед упаковкой (на этапе тестирования).
  • По завершении упаковки удалите файлы * .java из классов war / WEB-INF / (используя Ant).

Ниже приведен XML, который я использовал, чтобы сделать это возможным. Пожалуйста, дайте мне знать, если у вас есть способ упростить эту конфигурацию.

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete>
<fileset dir="${project.build.outputDirectory}" includes="**/*.java"/>
</delete>
</tasks>
</configuration>
</execution>
</executions>
</plugin>

 

Это решение, кажется, работает довольно хорошо. Что касается разработки вашей библиотеки в размещенном режиме, вам необходимо настроить два файла * .gwt.xml, один из которых не имеет определенной <точки входа>, а другой — нет. Сконфигурируйте один с точкой входа как <модуль> в вашей конфигурации gwt-maven-plugin.

В качестве примечания я обнаружил несколько проблем с версией 1.1 Maven GWT Archetype . Ниже приведены шаги, которые я использовал для исправления этих проблем и обновления до GWT 1.7.0 (я понимаю, что 1.7.1 вышла, но gwt-dev-1.7.1-mac.jar не существует в центральном Maven ).

Сначала создайте новый проект, запустив в командной строке следующее:

mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo \
-DarchetypeArtifactId=gwt-maven-plugin \
-DarchetypeVersion=1.1 \
-DgroupId=com.yourcompany \
-DartifactId=gwt-project -Dversion=1.0-SNAPSHOT -B

После создания проекта вам нужно изменить pom.xml следующим образом:

  1. Измените версию gwt-maven-plugin на 1.1 .
  2. Измените свойство $ {gwtVersion} на 1.7.0 .
  3. Добавьте <runTarget> Application.html </ runTarget> в элемент <configuration> плагина.
  4. Переместите Application.html и web.xml, чтобы они находились в каталоге «war».
  5. Обновите файл Application.html, добавив имя модуля GWT в теге <script>.

Я надеюсь, что эти инструкции помогут вам создать модульные проекты GWT с Maven. Эта установка отлично работает на моем текущем проекте.

От http://raibledesigns.com/rd/entry/running_hosted_mode_in_gwt