2015-03-30 3 views
2

Я хотел бы добавить функциональность GWT (Google веб-инструментария) к существующему веб-приложению, созданному с помощью maven (сервлеты, jsps и т. Д.). Я прочитал несколько руководств по GWT и сумел успешно написать некоторые базовые примеры, но я не могу понять, как интегрировать его с моим существующим проектом. Все учебники, которые я нашел, сосредоточены на создании этого приложения с нуля (без Maven) или путем создания нового проекта с архетипом GWT (с Maven).Добавление GWT к существующему веб-приложению Maven

Как продолжить работу с существующим приложением (webapp archetype)? Я попытался добавить путь к GWT SDK в проект и создал базовый класс HelloWorld (я создал отдельную структуру пакетов только для GWT), следуя THIS tutorial.

Что я не понимаю, как правильно настроить все и где разместить файлы конфигурации? Предполагается, что файл конфигурации находится в корневой папке проекта (рядом с pom.xml)? Должен ли он быть назван так же, как мой проект, или на основе класса, указанного в качестве точки входа?

В принципе, моя нынешняя структура выглядит следующим образом:

  • SRC/главная/Java/WA2/GWT/клиенты/CarRental.java
  • SRC/главная/веб-приложение/CarRental.html (тот же каталог, мой JSPs)
  • SRC/resousrce/WA2/GWT/CarRental.gwt.xml (тот же каталог, pom.xml) - скажем, что мой проект называется "CarRental"

Это, очевидно, не работает. Я забыл какую-то конфигурацию? Неправильные местоположения? Спасибо за любую помощь!

EDIT: Я изменил структуру проекта и добавил зависимости maven. Кажется, что GWT признан сейчас. Тем не менее, при доступе к странице html он не запускает никакого кода GWT.

Это мой глупый тест с CarRental.html (SRC/главная/веб-приложение/CarRental.html):

<html> 
<head> 
<title>CarRental</title> 
    <script language="javascript" src="carrental/carrental.nocache.js"> 
    </script> 
</head> 
<body> 

<h1>Hello World</h1> 
<p>Welcome to first GWT application</p> 

</body> 
</html> 

CarRental.java (SRC/главная/Java/wa2.gwt.clients.CarRental .java):

package wa2.gwt.clients; 

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.user.client.Window; 

public class CarRental implements EntryPoint { 
     public void onModuleLoad() { 
     Window.alert("Hello, World!"); 
      } 

} 

Я все еще не хватает чего-то? Я обращаюсь к html-файлу, нажимая его и выполняя run as > run on server (webapp развернут на моем сервере Tomcat) или, просто набрав URL-адрес на localhost.

+1

1) добавить зависимость от [GWT-пользователь] (http://mvnrepository.com/artifact/com.google.gwt/gwt-user/2.7.0). 2) настройте плагин [GWT Maven] (http://mojo.codehaus.org/gwt-maven-plugin/). 3) Прибыль. –

+0

Дело в том, что проект компилируется, я могу получить доступ к html-контенту, но нет контента, сгенерированного из GWT, без каких-либо исключений или чего-либо, поэтому я думаю, что он не связывал части вместе ... – Smajl

+1

В этом случае goto 2). –

ответ

4

У меня есть приложение Maven/GWT со следующей структурой:

approot/pom.xml 
approot/src/main/resources 
approot/src/main/java/org/mydomain/MyApplication.gwt.xml 
approot/src/main/java/org/mydomain/client/... 
approot/src/main/java/org/mydomain/others/... 

Весь код GWT Java в пакете клиента, так как deined в файле gwt.xml, как это:

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd"> 
<module rename-to='resources'> 
    <inherits name='com.google.gwt.user.User'/> 
    <inherits name="com.google.gwt.resources.Resources" /> 
    <inherits name="com.google.gwt.uibinder.UiBinder"/> 
    <inherits name="some.other.Dependency" /> 
    <source path="client" /> 
    <entry-point class='org.mydomain.client.Main'/> 
</module> 

Здесь элемент source указывает, что все Java в пакете client (и любые подпакеты) должны обрабатываться компилятором GWT и преобразовываться в JavaScript. Все остальные пакеты являются серверными и не конвертируются. Если у вас нет серверной Java, у вас будет только пакет client.

Вам понадобятся зависимости GWT.Вот минимум, есть и другие:

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-user</artifactId> 
    <version>2.5.1</version> 
    <scope>provided</scope> 
</dependency> 

Важно также, чтобы включить Maven плагин GWT, поэтому компилятор GWT будет работать во время Maven построить. Настройте плагин в разделе <plugins> вашего pom.xml. Вот пример:

 <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>gwt-maven-plugin</artifactId> 
     <version>2.5.1</version> 
     <executions> 
      <execution> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>compile</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
+0

'2.5.1.' немного старый - читайте очень старый. Я бы это уточнил. В противном случае, прекрасное резюме! –

+0

Большое вам спасибо за ваш ответ! Теперь он компилируется вместе с GWT, но я все еще не могу выполнить какие-либо сценарии GWT. Пожалуйста, см. Отредактированный ответ. – Smajl

+0

Если вы скопировали мой файл gwt.xml, у вас будет атрибут 'rename-to = 'resources'. Тогда вам понадобится ваш HTML-файл для вызова 'resources.nocache.js'. Посмотрите в свой целевой каталог, ищите файл с именем * .nocache.js и убедитесь, что URL-адрес в вашем файле HTML верен для него. Вы также увидите несколько файлов с именем, похожим на BE8E1E3D65C51319A9AE7C28FD602F2D.cache.html – NickJ

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