2014-12-11 2 views
3

Я пытаюсь настроить мой проект на использование плагина gwt maven. Его компиляция правильно, но я не могу использовать либо режим dev, либо режим super dev для разработки.GWT SuperDevMode не видит изменений

Мои настройки следующим образом:

Maven конфигурации в порядке

mvn clean install 
mvn tomcat7:run-war-only 
mvn gwt:run-codeserver 

GWT Версия: 2.6.1

IDE: Intellij 14 Community Edition

Когда я внести изменения в клиент ява файлы и нажмите кнопку «скомпилировать» на странице сервера кодов, они не отражаются на веб-странице. Я подозреваю, что сервер кода не смотрит на те же источники, что и я. В частности, я думаю, что он ищет источники для компиляции в target/{project-name}/*

Ниже приведен фрагмент файла POM, который я использую.

<sourceDirectory>src/main/java</sourceDirectory> 
    <resources> 
     <resource> 
      <directory>src/main/java</directory> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 



    <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven.compiler.plugin.version}</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <!--compilerArgument>-proc:none</compilerArgument--> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.0</version> 
      <configuration> 
       <path>${tomcat.context}</path> 
       <port>${tomcat.webport}</port> 
       <ajpPort>${tomcat.ajpport}</ajpPort> 
       <contextReloadable>true</contextReloadable> 
      </configuration> 
     </plugin> 

     <!-- GWT Maven Plugin --> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>${maven.gwt.plugin.version}</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>compile</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <draftCompile>true</draftCompile> 
       <hostedWebapp>${webappDirectory}</hostedWebapp> 
       <noServer>true</noServer> 
       <port>${tomcat.webport}</port> 
       <runTarget>${tomcat.context}/index.html</runTarget> 
       <!--codeServerWorkDir>${webappDirectory}</codeServerWorkDir--> 
       <copyWebapp>true</copyWebapp> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <goals> 
         <goal>exploded</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <webappDirectory>${webappDirectory}</webappDirectory> 
      </configuration> 
     </plugin> 



    </plugins> 

</build> 

Любая помощь будет оценена !!

+0

вы можете показать свой проект имя.gwt.xml. У вас есть конфигурация ниже в вашем модуле xml?

+0

yes. У меня эти линии. Прямо сейчас, я повторяю шаг gwt: run-codeserver каждый раз, чтобы изменения отражались. Простой «Компиляция» - это просто перекомпилировать старый код. – BobLoblaw

+0

@ChrisHinshaw 'devModeRedirectEnabled' не требуется в 2.6.1 (и' xsiframe' является значением по умолчанию в 2.7 BTW) –

ответ

4

Потому что вы перечисляете src/main/java как <resource>, его файлы копируются в ${project.build.outputDirectory}, и что приходит первым в пути к классам, потому что вы можете фильтровать файлы из <resource> и имеют <source> и <resource> пересекаются (что в данном случае). См http://jira.codehaus.org/browse/MGWT-290

Так как:

  • удалить src/main/java из ресурсов проекта
  • удалить *.java файлы из ресурсов проекта (так, по крайней мере, они не копируются в выходной каталог и не тень src/main/java)
  • или запустите mvn resources:resources каждый раз, когда вы меняете файлы в src/main/java (как, например, вы используете файлы в src/main/resources, из-за возможной фильтрации); это может быть автоматизировано вашей IDE или каким-либо другим инструментом (например, watchman).
+1

изменения отражаются после того, как модифицированные POM с этим сегментом SRC/Главный/Java **/*. Java BobLoblaw

2

Я бы обновил проект, чтобы использовать gwt-2.7.0 и gwt-maven-2.7.0, поэтому для запуска режима супердева среди вашего приложения в контейнере сервлетов ничего особенного не требуется, просто запустите mvn gwt:run и укажите браузеру http://localhost:8888, то каждый раз, когда вы меняете свой код, просто обновите его в своем браузере, чтобы перекомпилировать приложение.

Как вы можете видеть, это довольно просто, и вы должны заранее перекомпилировать в 2.7.0 намного быстрее.

+0

Как вы сказали, я обновлен до 2.7.0, и я получаю '[INFO] пропущен компиляцию, потому что нет ввода файлы были изменены [INFO] 1.524s total - Compile completed', когда я меняю клиентский источник – BobLoblaw

+0

- это те файлы в вашем клиентском пакете, я имею в виду в исходном патче, определенном в вашем module.gwt.xml? режим superdev только перекомпилирует изменения в папках gwt src, унаследованных в вашем модуле –

+0

Да, эти файлы находятся в клиентском пакете. По какой-то причине они не видны компилятору. Если я скопирую отредактированный файл вручную из src/main/java//client/to target/<имя-проекта>/WEB-INF/classes//client /, и перезагрузите веб-страницу, я могу увидеть изменения – BobLoblaw

1

Пробуя все советы по форуму и различные параметры запуска кодаServer безуспешно, единственное, что я нашел, чтобы вызвать обновление без перезапуска любого сервера, - это снова щелкнуть по закладке «Dev Mode Off», а затем «Dev Mode On 'then' Compile'button ... и сервер кода перекомпилирует измененный источник java пошагово! (ярлыки режима Dev - это те, которые вы должны были перетащить с домашней страницы сервера кода, например http://localhost:9876, в закладки браузера).

Обновление страницы было достаточно с «Google Plugin for Eclipse» (== GPE, устаревшее янв. 2018) и, кажется, уже не с «GWT Eclipse Plugin» (замените GPE) (оцените тонкую разницу в формулировках!)

Смежные вопросы