使用 SpringSource Tool Suite 2.3.3.M1 结合 Roo 和 GWT

工程 | Christian Dupuis | 2010年6月2日 | ...

到目前为止,你们中的大多数人可能都已经听说过 Google I/O 上关于 Spring、Roo、STS 和 GWT 的发布消息。BenRod 最近在他们各自的博客文章中对此进行了介绍。如果您错过了主题演讲,强烈建议您观看 YouTube 上的录像进行补习(相关部分从录像的 1:09:00 开始)。

今天我想提供一些详细的步骤和说明,介绍如何使用 Roo 和 STS 创建您的第一个 GWT 应用程序。

安装

在我们启动 Roo shell 并开始输入命令之前,我们需要下载并安装所有先决条件。尽管构建可在云端运行的高级单页应用程序涉及很多组件,但您只需要下载适用于您操作系统的 STS 2.3.3.M1 捆绑包。STS 安装包含 Roo 1.1.0.M1、带有 Spring Insight 的 tc Server Developer Edition(获取 Speed Tracer 集成所需)、Maven 2.2 以及对 Google Plugin for Eclipse (GPE) 的访问。

  1. springsource.com 下载 STS 2.3.3.M1。
  2. 运行安装程序或解压下载的存档。按照安装说明操作。
  3. 启动 STS 并打开 Dashboard("Help -> Dashboard")。
  4. 从 Dashboard 的 Extension 选项卡安装 "Google Plugin for Eclipse" 和 "DataNucleus Plugin"。
  5. 按提示重启。

创建 GWT 脚手架应用

安装 STS 后,我们就可以启动 Roo 并创建我们的应用了。如果您想查看主题演讲中使用的应用程序,请按照以下步骤操作:

  1. 在您的操作系统命令提示符下,创建一个新的空目录并进入该目录。
  2. 输入 "roo" 并按回车键启动 Roo 1.1.0.M1。请注意 Roo 启动时在 shell 欢迎信息中显示的版本号。它应该是 "1.1.0.M1 [rev 3a0b8a3]"。为了方便起见,Roo 已与 STS 安装在同一个文件夹中。
  3. 输入 "script expenses.roo"。这将运行提供的 Roo 脚本,创建 Ben 在主题演讲中使用的基本费用跟踪示例应用程序。
  4. 输入 "quit" 退出 Roo shell。

到目前为止,您已经拥有了一个完全正常工作的 Spring & GWT 2.1 应用程序。随意查看 Roo 为您生成的代码。如果您想了解更多关于此 GWT 应用程序底层架构的信息,我推荐 Ray Ryan 的Google I/O 演示。查看 I/O 网站提供的演示录像和幻灯片。

运行应用

多亏了 Roo,您可以轻松地在本地运行生成的应用程序。如果您的系统上安装了 Maven,只需在操作系统命令提示符下输入 "mvn gwt:run"。确保您仍然在创建项目的同一个目录中。这将启动 GWT 开发模式,您可以轻松地在浏览器中加载 GWT 应用程序。为了使用 GWT 开发模式,您需要安装相关的浏览器插件。如果尚未安装插件,浏览器会提示您安装。

将项目导入到 STS

通过与 Google 的 Google Plugin for Eclipse (GPE) 团队合作,我们增强了 STS,使您可以轻松地将创建的 Roo 项目导入到您的 Eclipse 环境中。STS 会自动配置您的项目,以便无需离开您的 IDE 即可使用内置的 Maven 和 GWT 支持。

从 STS 导入项目,使用 "File -> Import ... -> Maven -> Existing Maven Project"。这将自动配置所有必需的项目设置,安装类路径容器并启动 Roo shell。

在 STS 中运行应用

使用 Google 的 GWT 工具,现在可以非常容易地在 STS 中启动应用程序。这允许您调试服务器端代码,更有趣的是也可以调试前端 GWT Java 代码。从项目的上下文菜单中选择 "Debug As -> Web Application"。请选择 "ApplicationScaffold.html" html 页面开始并点击 "OK"。只需确认 "WAR Directory Selection" 对话框接受默认设置即可。

在 "Console" 视图中,您现在可以看到嵌入式 GWT 开发模式正在启动。此外,GPE 的 "Development Mode" 视图也会出现,使您可以轻松访问已启动的应用程序。参见下方截图。

GWT Development Mode

此时,您可以随意添加断点并使用 Eclipse 调试器来熟悉生成的应用程序。

为了尝试 Roo 出色的往返支持,请打开 "Employee" Java 源文件并添加一个新字段。例如,添加一个 "private String comment" 字段并保存文件。注意 Roo 如何立即更新 GWT 应用程序,将新字段合并到 UI 和后端代码中。您可以在 "Roo Shell" 视图中观察到这一点。请注意,STS 集成包括到 Roo 编辑过的文件的链接,因此您可以打开它们并查看更改。

Roo Shell

如果您此时仍运行着开发模式服务器,请打开 "Development Mode" 视图并点击视图工具栏中的 "Refresh" 图标。深呼吸一下 - 大约 2-3 秒 - 然后回到您的浏览器并点击“刷新”。导航到 "Employee" 屏幕,注意 UI 上新添加的字段。您可以通过创建一个新的 Employee 并填写 "comment" 字段来验证服务器代码已完全刷新(包括适当的持久化)。

部署到 Google App Engine

我们收到了不少关于如何将脚手架应用程序部署到 Google App Engine 以及它是否能在 GAE 上运行的问题。它当然可以,并且可以在此处进行测试。

部署非常简单,可以在 STS 中或通过命令行完成。在下一节中,我将展示如何通过命令行向 GAE 部署。

  1. 首先,您可能想将示例应用程序使用的内存中 Hypersonic 数据库切换到基于 BigTable 的 Google Datastore。为此,从命令行启动 Roo shell 并执行以下命令:"persistence setup --database GOOGLE_APP_ENGINE --provider DATANUCLEUS"。
  2. 接下来,我们需要指定 GAE 应用程序名称。可以通过编辑 "src/main/webapp/WEB-INF/appengine-web.xml" 文件来完成。请将应用程序名称设置为您的 GAE 帐户中已存在的应用程序。另外,您也可以在输入 "persistence setup" 命令时通过 "--applicationId" 选项指定应用程序名称。
  3. 现在部署到 GAE 仅需运行 "mvn gwt:compile gae:deploy -DskipTests" ("-DskipTests" 仅在 Roo 1.1.0.M1 中需要。这已经修复,Roo 1.1.0.M2 将不再需要)。

我希望这些说明和步骤有所帮助,并能鼓励更多人尝试 Roo 对 GWT 的支持。请记住,GWT、Roo 和 STS 处于 M1 阶段,因此您可能会遇到限制或意外问题。在这种情况下,请在 Spring 社区的RooSTS 论坛发帖。我们,SpringSource 和 Google 的工程师,乐意提供帮助并期待您的反馈。

获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速进步。

了解更多

获得支持

Tanzu Spring 在一份简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将到来的活动

查看 Spring 社区所有即将到来的活动。

查看全部