2015-01-14 1 views
3

Я работал с GWT и eclipse некоторое время, и я хотел немного поиграть с maven и плагином GWT (gwt-maven-plugin , enter link description here). Я попытался использовать его из затмения (Luna 4.4), но, очевидно, я не делал этого правильно, так как он был чрезвычайно хрупким до такой степени, что он прерывался на регулярной основе, так как среда IDE перезаписывала его настройки, когда я менял что-то маленькое в pom.xml. Поэтому я решил сделать шаг назад и устранить черную магию, затмение которой и запустить новый проект с нуля из командной строки.Сервер кода GWT не находит модуль во вновь сгенерированном проекте с использованием архетипа maven

Однако, я не кажется, можно будет получать навык запуска фактического применения, потому что, когда я исполняю сервер кодов, перейдите на страницу, я вижу следующее сообщение:

Can't find any GWT Modules on this page. 

Очевидно, что код сервер работает, однако файлы модулей, похоже, не были размещены. AFAIK Я вижу после нескольких часов обучения (и нахождения http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/), должен быть второй процесс, фактически принимающий код параллельно с сервером кода. Каков подходящий способ сделать это с maven? Должен ли я открыть второй терминал и запустить причал или что-то еще параллельно с сервером кода? Если да, может кто-нибудь, пожалуйста, дайте мне подсказку, как я могу сделать это наиболее эффективно?

Заранее благодарен!

Вот как я создал проект:

mvn archetype:generate \ 
    -DarchetypeGroupId=org.codehaus.mojo \ 
    -DarchetypeArtifactId=gwt-maven-plugin \ 
    -DarchetypeVersion=2.7.0 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Maven Stub Project (No POM) 1 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) > generate-sources @ standalone-pom >>> 
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<< 
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom --- 
[INFO] Generating project in Interactive mode 
[INFO] Archetype repository missing. Using the one from [org.codehaus.mojo:gwt-maven-plugin:2.7.0] found in catalog remote 
Define value for property 'groupId': : com.mytest 
Define value for property 'artifactId': : gwtmvntest 
Define value for property 'version': 1.0-SNAPSHOT: : 
Define value for property 'package': com.mytest: : com.mytest.gwtmvntest 
Define value for property 'module': : GwtMvnTest 
Confirm properties configuration: 
groupId: com.mytest 
artifactId: gwtmvntest 
version: 1.0-SNAPSHOT 
package: com.mytest.gwtmvntest 
module: GwtMvnTest 
Y: : 
[INFO] ---------------------------------------------------------------------------- 
[INFO] Using following parameters for creating project from Archetype: gwt-maven-plugin:2.7.0 
[INFO] ---------------------------------------------------------------------------- 
[INFO] Parameter: groupId, Value: com.mytest 
[INFO] Parameter: artifactId, Value: gwtmvntest 
[INFO] Parameter: version, Value: 1.0-SNAPSHOT 
[INFO] Parameter: package, Value: com.mytest.gwtmvntest 
[INFO] Parameter: packageInPathFormat, Value: com/mytest/gwtmvntest 
[INFO] Parameter: package, Value: com.mytest.gwtmvntest 
[INFO] Parameter: version, Value: 1.0-SNAPSHOT 
[INFO] Parameter: module, Value: GwtMvnTest 
[INFO] Parameter: groupId, Value: com.mytest 
[INFO] Parameter: artifactId, Value: gwtmvntest 
[INFO] project created from Archetype in dir: /private/tmp/mvn/gwtmvntest 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 08:12 min 
[INFO] Finished at: 2015-01-14T12:59:17+01:00 
[INFO] Final Memory: 15M/310M 
[INFO] ------------------------------------------------------------------------ 

Вот как я составил проект:

mvn compile gwt:compile 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building GWT Maven Archetype 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- gwt-maven-plugin:2.7.0:generateAsync (default) @ gwtmvntest --- 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ gwtmvntest --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 2 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ gwtmvntest --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 6 source files to /private/tmp/mvn/gwtmvntest/target/gwtmvntest-1.0-SNAPSHOT/WEB-INF/classes 
[INFO] 
[INFO] --- gwt-maven-plugin:2.7.0:compile (default-cli) @ gwtmvntest --- 
[INFO] Compiling module com.mytest.gwtmvntest.GwtMvnTest 
[INFO] Compiling 5 permutations 
[INFO]  Compiling permutation 0... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 4... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 3... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 2... 
[INFO]  Process output 
[INFO]   Compiling 
[INFO]    Compiling permutation 1... 
[INFO] Compile of permutations succeeded 
[INFO] Compilation succeeded -- 13.866s 
[INFO] Linking into /private/tmp/mvn/gwtmvntest/target/gwtmvntest-1.0-SNAPSHOT/GwtMvnTest 
[INFO] Link succeeded 
[INFO] Linking succeeded -- 0.171s 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 18.228 s 
[INFO] Finished at: 2015-01-14T13:07:07+01:00 
[INFO] Final Memory: 22M/310M 
[INFO] ------------------------------------------------------------------------ 

Вот как я запустил проект:

mvn gwt:run-codeserver 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building GWT Maven Archetype 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] >>> gwt-maven-plugin:2.7.0:run-codeserver (default-cli) > process-classes @ gwtmvntest >>> 
[INFO] 
[INFO] --- gwt-maven-plugin:2.7.0:generateAsync (default) @ gwtmvntest --- 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ gwtmvntest --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 2 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ gwtmvntest --- 
[INFO] Nothing to compile - all classes are up to date 
[INFO] 
[INFO] <<< gwt-maven-plugin:2.7.0:run-codeserver (default-cli) < process-classes @ gwtmvntest <<< 
[INFO] 
[INFO] --- gwt-maven-plugin:2.7.0:run-codeserver (default-cli) @ gwtmvntest --- 
[INFO] Turning off precompile in incremental mode. 
[INFO] Super Dev Mode starting up 
[INFO] workDir: /var/folders/nk/58gyq85x7l3_mzb5rc0gw42w0000gn/T/gwt-codeserver-5859907708379954718.tmp 
[INFO] Loading Java files in com.mytest.gwtmvntest.GwtMvnTest. 
[INFO] Module setup completed in 11742 ms 
[ERROR] 2015-01-14 13:14:35.800:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT 
[ERROR] 2015-01-14 13:14:35.833:INFO:oejs.AbstractConnector:Started [email protected]:9876 
[INFO] 
[INFO] The code server is ready at http://localhost:9876/ 
+0

Вам все еще нужно развернуть приложение. Сервер кода GWT позволяет вам перекомпилировать GWT-код по мере необходимости в вашем приложении (он заменяет все JS-код, IIRC), но также необходимо запустить базовое приложение. Другими словами, разверните тестовую среду, как обычно, а затем запустите сервер кода. – Compass

+0

Спасибо за ваш комментарий. Есть ли способ сделать это в maven? Я попробовал 'mvn tomcat7: run' в отдельном окне. Он доставляет HTML-страницу на http: // localhost: 8080/', однако есть сообщение, в котором говорится:« Невозможно найти какие-либо модули GWT на этой странице ». –

+0

Я проверил html, который был передан tomcat. Он ссылается на 'GwtMvnTest/GwtMvnTest.nocache.js', ergo пытается найти его под' http: // localhost: 8080/', где это не так. Он находится под 'http: // localhost: 9876 /', где он обслуживается сервером кодов. Есть идеи? –

ответ

7

С GWT 2.7+ все, что вам нужно, это запустить mvn gwt:run, и он будет использовать SuperDevMode под обложкой, с «перекомпиляцией на lo ad "(вместо использования букмарклетов).
Обратите внимание, что gwt:run не будет копировать src/main/webapp или вашей зависимости, так что вам, вероятно, придется работать mvn war:exploded (или mvn package) в качестве предварительного условия (и каждый раз, когда вы изменяете файл в src/main/webapp или вам необходимо обновить свою зависимость)

Учитывая, что если ваш проект действительно прост, вы должны начать использовать отдельные модули Maven раньше для кода клиента и сервера; это связано с тем, что Maven настаивает на том, что вы не можете управлять «маршрутным классом стороны клиента GWT» и «маршрутом класса на стороне сервера» в том же POM.
я опубликовал архетипы, чтобы помочь установки все вверх: https://github.com/tbroyer/gwt-maven-archetypes (я, к сожалению, не было времени еще, чтобы обновить их GWT 2.7)
Либо это, либо использовать Gradle ...

+0

Спасибо, Томас. Причиной простого приложения является устранение как можно большего числа переменных, чтобы найти ошибки. Мне нравится ваш modular-webapp archetype много, и я буду определенно смотреть на него после того, как я исправлю инструмент. Сначала я попробовал ваше предложение с помощью 'mvn gwt: run', однако я не смог увидеть предлагаемую страницу. Начинается «Режим разработки GWT», но открытие страницы «http: //127.0.0.1: 8888/GwtMvnTest.html» в браузере приводит к ошибке HTTP 404. Будете ли вы так добры и назовите меня в правильном направлении, почему «GwtMvnTest.html», созданный архетипом, не обслуживается? –

+0

Ха, вам нужно запустить 'mvn package' или' mvn war: exploded' (или что-то еще скопирует ваш 'src/main/webapp' в' target/gwtmvntest-1.0-SNAPSHOT' и ваши зависимости к 'target/gwtmvntest- 1.0-SNAPSHOT/WEB-INF/lib'), прежде чем вы сможете использовать 'mvn gwt: run'. –

+0

Эй, Томас, попробовал артефакт modular-webapp с вашей страницы github. Просто создайте приложение, за которым следует 'gwt: run', как вы предложили. Результаты в следующем: 'Параметры 'runTarget' для цели org.codehaus.mojo: gwt-maven-plugin: 2.7.0-rc1: run отсутствуют или недействительны'. Пытался перейти на gwt 2.7.0 в верхнем уровне pom.xml безрезультатно. То же самое с GWT 2.7.0. Мне нравится тот факт, что проект хорошо распределен, но инструмент на первом месте ... Я пропустил что-то очевидное, почему html-файлы более простого приложения не распознаются из коробки? –

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