Maven и GWT (и Eclipse) - Это действительно работает?
В последние несколько дней я пытался создать/запустить проект в Eclipse с помощью gwt-maven-plugin и продолжать работать в блокпосты (см. некоторые из моих предыдущих вопросов). Мне нравится использовать Maven для выполнения своих сборок, но я нахожусь в точке, где я собираюсь перейти на маршрут сборки Ant из-за осложнений с использованием Maven.
Кто-нибудь там настроил/работал хорошо? Это только я или это сложнее, чем должно быть?
Ответы
Ответ 1
После долгих разочарований, пытающихся заставить вещи играть хорошо вместе, это настройка, которую у меня есть, что "работает" для меня. "Работы" означают, что я могу создавать, запускать и отлаживать проект GWT с трюками, но это не самое элегантное решение.
Создать проект
Значительная часть шагов такая же, как и Pascal в этом сообщении: Maven GWT 2.0 и Eclipse. Я перечислил, чтобы я был прав.
В Eclipse (Helios) с установленными плагинами m2eclipse и GWT Eclipse:
Создайте новый проект Maven, используя архетип gwt-maven-plugin
Измените pom.xml:
- установите
<gwt.version property>
в 2.0.4
(должен быть таким же, как GWT Eclipse
Версия плагина)
- set
<maven.compiler.source>
и
<maven.compiler.target>
свойства
1,6
- удалить
<goal>generateAsync</goal>
из gwt-maven-plugin <plugin>
config
- добавить maven-war-plugin в pom.xml
Пример использования maven-war-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<warSourceDirectory>war</warSourceDirectory>
<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
</configuration>
</plugin>
Обновить свойства проекта:
- Google → Web Toolkit, установите флажок "Использовать Google Web Toolkit" и убедитесь, что выбрано "Использовать SDK по умолчанию (GWT-2.0.4).
Запуск Maven "gwt: eclipse" в проекте (настройка среды и запуск конфигурации)
Скопировать файл *.launch в файл workspace.metadata.plugins\org.eclipse.debug.core.launches
Перезапустить Eclipse
Скомпилировать/выполнить проект
Я создал конфигурацию выполнения, которая делает mvn clean compile gwt:run
. Gwt: run необходим для копирования ресурсов и библиотек lib в военный каталог. Однако он не копирует web.xml из src/main/webapp/WEB-INF в war/WEB-INF/. Итак, мне нужно вручную скопировать этот файл.
Если я хочу запустить свое приложение, вышеуказанного шага достаточно. Однако, если я хочу отлаживать приложение, я запускаю его, выбирая конфигурацию Google "Веб-приложение" из "Конфигурации отладки", которая была создана, когда ранее был скопирован файл .launch. Эта конфигурация позволяет отлаживать (точки останова и т.д.) Без какой-либо другой конфигурации или необходимости удаленной отладки.
Ответ 2
Это сложнее, чем это должно быть, однако это возможно. Все намеки, размещенные здесь, могут сделать трюк. Однако вы все еще можете иметь проблемы с загрузкой. Я решил переключиться на GWT 2.1 и использовать новые возможности JettyLauncher. Вы можете создать собственную пристанную пусковую установку следующим образом:
public class MyJettyLauncher extends com.google.gwt.dev.shell.jetty.JettyLauncher {
@Override
protected WebAppContext createWebAppContext(TreeLogger logger, File appRootDir) {
return new WebAppContext(appRootDir.getAbsolutePath(), "/");
}
}
Затем добавьте параметр -server MyJettyLauncher
в конфигурацию gwt launcher. С такой конфигурацией все библиотеки управляются с помощью m2eclipse (вы даже можете удалить GWT SDK из пути к классам), и нет необходимости копировать что-либо в WEB-INF/lib
(вы можете удалить gwt-servlet.jar
, который уже может быть там).
Готовая программа запуска находится здесь, в библиотеке tadedon:
http://code.google.com/p/tadedon/source/browse/tadedon-gwt-dev/src/main/java/com/xemantic/tadedon/gwt/dev/JettyLauncher.java
Ответ 3
Да, в 2016 году это действительно хорошо.:)
Я запускаю Tomcat из Eclipse, я запускаю GWT codeerver (режим SuperDev) из Eclipse, я запускаю Chrome из Eclipse.
Вы найдете довольно свежие и очень ценные установочные руководства по каналу YouTube Brandon Donnelson: https://www.youtube.com/user/branflake2267/videos
Для меня важно отладчик Eclipse для GWT SuperDevMode: https://sdbg.github.io/
Я предпочитаю, чтобы мой проект "mavenized", и есть много архетипов Maven, также предоставленных Brandon: https://github.com/branflake2267/Archetypes/tree/master/archetypes
Официальная отправная точка (а не только) для загрузки плагина GPE (не путать с вышеупомянутым плагином отладчика) находится на GwtProject.com: http://www.gwtproject.org/download.html
Для меня лично сам GPE стал скорее дополнительным компонентом "удобства". (Да, рефакторинг и автозаполнение приятно иметь, но все это необходимо для.:)
Это не одно решение, и я предпочитаю его таким, как те, которые, как правило, являются чёрными ящиками, склонными к взлому.
И BTW обязательно взгляните на материал GWT: http://gwtmaterialdesign.github.io/gwt-material-demo/
(В настоящее время работает с 2,8-бета1.)
Ответ 4
Для Eclipse я использую: m2eclipse plugin (1.0). Он хорошо работает с одним или двумя незначительными вещами. Также загрузите плагин m2eclipse-extras, чтобы добавить функциональность SVN и Maven (или CVS, если хотите).
При загрузке вашего проекта он считывает pom.xml и [re] создает файлы конфигурации Eclipse, такие как команда mvn eclipse: eclipse.
Для GWT... Я тоже использовал его. Это довольно продуманная конфигурация, но она работает. Я использую GWT 2.0.3, maven-gwt-plugin использует зависимости для работы (без ссылки на GWT SDK), и он может отлаживать Eclipse, который просто велик.
Вам нужно скомпилировать в военный каталог (а не стандарт target/classes). Но подробности в моей работе, поэтому позвольте мне посмотреть завтра и завершить этот ответ:) Не сдавайтесь. Это здорово иметь GWT + Eclipse + Maven.
Изменить: часть моей конфигурации
<build>...
<outputDirectory>war/WEB-INF/classes</outputDirectory>
...
</build>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<gwtVersion>${gwt.version}</gwtVersion> <!-- para forzar que use el de maven y no el SDK instalado -->
<disableCastChecking>true</disableCastChecking>
<disableClassMetadata>true</disableClassMetadata>
<runTarget>/subscriber/listSubscribers.htm</runTarget>
<webappDirectory>${basedir}/war</webappDirectory>
<soyc>true</soyc>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- dont know/remember if the jetty inside the gwt uses this... but it doesnt hurt-->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.14</version>
<configuration>
<webAppConfig>
<contextPath>/magazine</contextPath>
<baseResource implementation="org.mortbay.resource.ResourceCollection">
<resourcesAsCSV>
${basedir}/src/main/webapp,
${basedir}/war
</resourcesAsCSV>
</baseResource>
</webAppConfig>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8888</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
</connectors>
<scanIntervalSeconds>3</scanIntervalSeconds>
<scanTargets>
<scanTarget>${basedir}/war</scanTarget>
</scanTargets>
</configuration>
</plugin>
И
Для отладки я создаю две задачи:
1) maven build внутри затмения, которое запускает два гола: war:exploded gwt:debug
- Первая копирует все ресурсы в каталог war для отладки gwt для их использования.
- Далее gwt готов.
Возможно, вам нужно выполнить gwt:compile
в первый раз
2) конфигурацию отладки удаленных приложений Java с выбранным проектом.
Вы запускаете эту конфигурацию, когда gwt: debug "прослушивает порт 8000"
И: это в родительском pom.xml(извините, что я отредактирую это сообщение позже:)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<webappDirectory>${basedir}/war</webappDirectory>
<warName>${artifactId}</warName>
</configuration>
</plugin>
Ответ 5
helios написал хорошее объяснение. Но это не актуально на данный момент. Поэтому я советую вам попробовать мой современный пример приложения EAR, работающего на GlassFish, и полную поддержку отладки.