将 GWT 添加到现有的 Maven Web 应用程序
Adding GWT to existing Maven web application
我想将一些 GWT(Google 网络工具包)功能添加到我现有的使用 maven(servlets、jsps 等)构建的网络应用程序中。我已经阅读了一些关于 GWT 的教程并设法成功编写了一些基本示例,但我似乎无法理解如何将它与我现有的项目集成。我发现的所有教程都侧重于从头开始构建此应用程序(不使用 Maven)或使用 GWT 原型(使用 Maven)创建新项目。
如何处理现有应用程序(webapp 原型)?我尝试将 GWT SDK 路径添加到项目中,并在 THIS tutorial 之后创建了基本的 HelloWorld class(我为 GWT 创建了单独的包结构)。
我不明白的是如何正确设置所有内容以及将配置文件放在哪里?配置文件是否应该位于项目的根文件夹中(pom.xml 旁边)?它应该命名为与我的项目相同的名称还是基于指定为入口点的 class?
基本上,我当前的结构如下所示:
- src/main/java/wa2/gwt/clients/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>
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 as > run on server
来访问 html 文件(webapp 已部署到我的 Tomcat 服务器)或者只是在本地主机上键入 URL。
我有一个具有以下结构的 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 代码都在客户端包中,在 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
元素指定 client
包(和任何子包)中的所有 Java 将由 GWT 编译器处理并转换为 Java脚本。所有其他包都是服务器端的,不会被转换。如果您没有服务器端 Java,那么您将只有 client
包。
您将需要 GWT 依赖项。这是最小值,还有其他的:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.5.1</version>
<scope>provided</scope>
</dependency>
包含 GWT maven 插件也很重要,因此 GWT 编译器将在 Maven 构建期间 运行。在 pom.xml 的 <plugins>
部分配置插件。这是一个例子:
<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>
我想将一些 GWT(Google 网络工具包)功能添加到我现有的使用 maven(servlets、jsps 等)构建的网络应用程序中。我已经阅读了一些关于 GWT 的教程并设法成功编写了一些基本示例,但我似乎无法理解如何将它与我现有的项目集成。我发现的所有教程都侧重于从头开始构建此应用程序(不使用 Maven)或使用 GWT 原型(使用 Maven)创建新项目。
如何处理现有应用程序(webapp 原型)?我尝试将 GWT SDK 路径添加到项目中,并在 THIS tutorial 之后创建了基本的 HelloWorld class(我为 GWT 创建了单独的包结构)。
我不明白的是如何正确设置所有内容以及将配置文件放在哪里?配置文件是否应该位于项目的根文件夹中(pom.xml 旁边)?它应该命名为与我的项目相同的名称还是基于指定为入口点的 class?
基本上,我当前的结构如下所示:
- src/main/java/wa2/gwt/clients/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>
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 as > run on server
来访问 html 文件(webapp 已部署到我的 Tomcat 服务器)或者只是在本地主机上键入 URL。
我有一个具有以下结构的 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 代码都在客户端包中,在 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
元素指定 client
包(和任何子包)中的所有 Java 将由 GWT 编译器处理并转换为 Java脚本。所有其他包都是服务器端的,不会被转换。如果您没有服务器端 Java,那么您将只有 client
包。
您将需要 GWT 依赖项。这是最小值,还有其他的:
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.5.1</version>
<scope>provided</scope>
</dependency>
包含 GWT maven 插件也很重要,因此 GWT 编译器将在 Maven 构建期间 运行。在 pom.xml 的 <plugins>
部分配置插件。这是一个例子:
<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>