将GWT添加到现有的Maven Web应用程序

Sma*_*ajl 3 java gwt web-applications maven

我想在我使用maven(servlets,jsps等)构建的现有Web应用程序中添加一些GWT(Google Web工具包)功能.我已经阅读了一些关于GWT的教程,并设法成功编写了一些基本的例子,但我似乎无法理解如何将它与我现有的项目集成.我发现的所有教程都专注于从头开始构建这个应用程序(没有Maven)或者使用GWT原型(使用Maven)创建新项目.

如何继续使用现有应用程序(webapp原型)?我尝试将路径do GWT SDK添加到项目中,并在本教程之后创建了基本的HelloWorld类(我为GWT创建了单独的package structire).

我不明白的是如何正确设置所有内容以及放置配置文件的位置?配置文件是否应该位于项目的根文件夹中(pom.xml旁边)?它的名称应该与我的项目命名相同还是基于指定为入口点的类?

基本上,我目前的结构如下:

  • 的src/main/JAVA/WA2/GWT /客户/ CarRental.java
  • src/main/webapp/CarRental.html(与我的JSP相同的目录)
  • src/resousrce/wa2/gwt/CarRental.gwt.xml(与pom.xml相同的目录) - 假设我的项目名为"CarRental"

这显然不起作用.我忘记了一些配置吗?位置错了吗?谢谢你的帮助!

编辑:我改变了项目的结构并添加了maven依赖项.似乎GWT现在得到认可.但是,在访问html页面时,它仍然没有运行任何GWT代码.

这是我对CarRental.html(src/main/webapp/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>
Run Code Online (Sandbox Code Playgroud)

CarRental.java(src/main/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!");
           }

}
Run Code Online (Sandbox Code Playgroud)

我还缺少什么吗?我通过单击并执行run as > run on server(webapp部署到我的Tomcat服务器)或者只是在localhost上键入URL 来访问html文件.

Nic*_*ckJ 5

我有一个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/...
Run Code Online (Sandbox Code Playgroud)

所有GWT Java代码都在客户端包中,如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>
Run Code Online (Sandbox Code Playgroud)

这里,该source元素指定client包中的所有Java (以及任何子包)将由GWT编译器处理并转换为JavaScript.所有其他包都是服务器端,不进行转换.如果您没有服务器端Java,那么您将只拥有该client软件包.

您将需要GWT依赖项.这是最低限度,还有其他:

<dependency>
  <groupId>com.google.gwt</groupId>
  <artifactId>gwt-user</artifactId>
  <version>2.5.1</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

包含GWT maven插件也很重要,因此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>
Run Code Online (Sandbox Code Playgroud)