Maven и GWT (и Eclipse) - это действительно работает? - PullRequest
10 голосов
/ 01 сентября 2010

В последние несколько дней я пытался создать / запустить проект в Eclipse с помощью плагина gwt-maven-plugin и постоянно сталкиваться с препятствиями (см. Некоторые из моих предыдущих вопросов).Мне нравится использовать Maven для своих сборок, но я нахожусь в точке, где я думаю о том, чтобы пойти по пути сборки Ant из-за сложностей использования Maven.работает хорошо?Это только у меня так или сложнее, чем должно быть?

Ответы [ 5 ]

5 голосов
/ 10 сентября 2010

После большого разочарования, пытаясь заставить вещи играть хорошо вместе, у меня есть такая установка, которая «работает» для меня.«Работает» означает, что я могу создавать, запускать и отлаживать проект GWT с помощью твиков, но это не самое элегантное решение.

Создание проекта

Большая часть шагов такая же, какОтвет Паскаля в этом посте: Maven GWT 2.0 и Eclipse .Я перечислю мои для ясности.

В Eclipse (Helios) с установленными плагинами m2eclipse и GWT Eclipse:

Создайте новый проект Maven, используя архетип gwt-maven-plugin

Измените файл pom.xml:

  • установите <gwt.version property> в 2.0.4 (должно совпадать с версией плагина GWT Eclipse)
  • установите <maven.compiler.source> и *От 1020 * свойств до 1.6
  • удалить <goal>generateAsync</goal> из gwt-maven-plugin <plugin> config
  • добавить maven-war-plugin в pom.xml

Пример подключаемого модуля maven-war:

<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 необходим для копирования ресурсов и библиотек jar в каталог war.Однако он не копирует файл web.xml из src / main / webapp / WEB-INF в war / WEB-INF /.Итак, я должен вручную скопировать этот файл.

Если я хочу запустить свое приложение, вышеуказанного шага достаточно.Однако, если я хочу отладить приложение, я запускаю его, выбрав конфигурацию Google «Веб-приложение» из Конфигурации отладки, которая была создана, когда файл .launch был скопирован ранее.Эта конфигурация позволяет выполнять отладку (точки останова и т. Д.) Без каких-либо других настроек или необходимости удаленной отладки.

2 голосов
/ 10 июня 2016

Да, в 2016 году так и есть, действительно, очень хорошо. :)

Я запускаю Tomcat из Eclipse, запускаю кодовый сервер GWT (режим SuperDev) из Eclipse, запускаю Chrome из Eclipse.

На канале Брэндона Доннельсона на YouTube вы найдете совсем новые и очень ценные учебные пособия по настройке: https://www.youtube.com/user/branflake2267/videos

Для меня важен Отладчик Eclipse для GWT SuperDevMode : https://sdbg.github.io/

Я предпочитаю иметь свой проект "mavenized", и есть много Maven архетипов, также предоставленных Брэндоном : https://github.com/branflake2267/Archetypes/tree/master/archetypes

Официальная отправная точка (не только) для загрузки плагина GPE (не путать с вышеупомянутым плагином отладчика) находится на GwtProject.com : http://www.gwtproject.org/download.html
Лично для меня сам GPE стал довольно необязательным компонентом «удобства». (Да, рефакторинг и автозаполнение приятно иметь, но это все, для чего это нужно.:)

Это не решение в один клик, и я предпочитаю его так, потому что те, как правило, являются черными ящиками, склонными к взлому.

И кстати, обязательно взгляните на GWT Материал : http://gwtmaterialdesign.github.io/gwt-material-demo/

(в настоящее время играет с 2.8-бета1.)

2 голосов
/ 02 сентября 2010

Сложнее, чем должно быть, однако это возможно.Все советы, размещенные здесь, могут помочь.Однако у вас все еще могут быть проблемы с загрузкой классов.Я решил перейти на GWT 2.1 и использовать новые возможности JettyLauncher.Вы можете создать свой собственный модуль запуска Jetty следующим образом:

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.При такой конфигурации все библиотеки управляются m2eclipse (вы даже можете удалить GWT SDK из classpath), и нет необходимости копировать что-либо в WEB-INF/lib (вы можете удалить gwt-servlet.jar, который может быть уже там).1008 * Готовый модуль запуска находится здесь, в библиотеке tadedon: http://code.google.com/p/tadedon/source/browse/tadedon-gwt-dev/src/main/java/com/xemantic/tadedon/gwt/dev/JettyLauncher.java

0 голосов
/ 02 февраля 2012

Гелиос написал хорошее объяснение. Но это не актуально на данный момент. Поэтому я советую вам попробовать мой современный пример EAR-приложения, работающего на GlassFish и с полной поддержкой отладки .

0 голосов
/ 01 сентября 2010

Для 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, что просто замечательно.

Вы должны скомпилировать в каталог war(не стандарт цели / классов).Но детали в моей работе, поэтому позвольте мне увидеть это завтра и завершить этот ответ :) Не сдавайтесь.Здорово иметь 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 внутри затмения, которая выполняет две цели: war:exploded gwt:debug

  • Первая копирует все ресурсы в каталог war для gwtотладка для их использования.
  • Далее gwt готов.

Может быть, вам нужно выполнить gwt:compile в первый раз

2) Удаленное приложение Javaотладочная конфигурация с выбранным проектом.

Вы запускаете эту конфигурацию, когда gwt: debug «прослушивает порт 8000»

AND : это в родительском модуле.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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...