领先一步
VMware 提供培训和认证,助您快速进步。
了解更多到目前为止,你们中的大多数人可能都已经听说过 Google I/O 上关于 Spring、Roo、STS 和 GWT 的发布消息。Ben 和 Rod 最近在他们各自的博客文章中对此进行了介绍。如果您错过了主题演讲,强烈建议您观看 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) 的访问。
安装 STS 后,我们就可以启动 Roo 并创建我们的应用了。如果您想查看主题演讲中使用的应用程序,请按照以下步骤操作:
到目前为止,您已经拥有了一个完全正常工作的 Spring & GWT 2.1 应用程序。随意查看 Roo 为您生成的代码。如果您想了解更多关于此 GWT 应用程序底层架构的信息,我推荐 Ray Ryan 的Google I/O 演示。查看 I/O 网站提供的演示录像和幻灯片。
多亏了 Roo,您可以轻松地在本地运行生成的应用程序。如果您的系统上安装了 Maven,只需在操作系统命令提示符下输入 "mvn gwt:run"。确保您仍然在创建项目的同一个目录中。这将启动 GWT 开发模式,您可以轻松地在浏览器中加载 GWT 应用程序。为了使用 GWT 开发模式,您需要安装相关的浏览器插件。如果尚未安装插件,浏览器会提示您安装。
通过与 Google 的 Google Plugin for Eclipse (GPE) 团队合作,我们增强了 STS,使您可以轻松地将创建的 Roo 项目导入到您的 Eclipse 环境中。STS 会自动配置您的项目,以便无需离开您的 IDE 即可使用内置的 Maven 和 GWT 支持。
从 STS 导入项目,使用 "File -> Import ... -> Maven -> Existing Maven Project"。这将自动配置所有必需的项目设置,安装类路径容器并启动 Roo shell。
使用 Google 的 GWT 工具,现在可以非常容易地在 STS 中启动应用程序。这允许您调试服务器端代码,更有趣的是也可以调试前端 GWT Java 代码。从项目的上下文菜单中选择 "Debug As -> Web Application"。请选择 "ApplicationScaffold.html" html 页面开始并点击 "OK"。只需确认 "WAR Directory Selection" 对话框接受默认设置即可。
在 "Console" 视图中,您现在可以看到嵌入式 GWT 开发模式正在启动。此外,GPE 的 "Development Mode" 视图也会出现,使您可以轻松访问已启动的应用程序。参见下方截图。
此时,您可以随意添加断点并使用 Eclipse 调试器来熟悉生成的应用程序。
为了尝试 Roo 出色的往返支持,请打开 "Employee" Java 源文件并添加一个新字段。例如,添加一个 "private String comment" 字段并保存文件。注意 Roo 如何立即更新 GWT 应用程序,将新字段合并到 UI 和后端代码中。您可以在 "Roo Shell" 视图中观察到这一点。请注意,STS 集成包括到 Roo 编辑过的文件的链接,因此您可以打开它们并查看更改。
如果您此时仍运行着开发模式服务器,请打开 "Development Mode" 视图并点击视图工具栏中的 "Refresh" 图标。深呼吸一下 - 大约 2-3 秒 - 然后回到您的浏览器并点击“刷新”。导航到 "Employee" 屏幕,注意 UI 上新添加的字段。您可以通过创建一个新的 Employee 并填写 "comment" 字段来验证服务器代码已完全刷新(包括适当的持久化)。
我们收到了不少关于如何将脚手架应用程序部署到 Google App Engine 以及它是否能在 GAE 上运行的问题。它当然可以,并且可以在此处进行测试。
部署非常简单,可以在 STS 中或通过命令行完成。在下一节中,我将展示如何通过命令行向 GAE 部署。
我希望这些说明和步骤有所帮助,并能鼓励更多人尝试 Roo 对 GWT 的支持。请记住,GWT、Roo 和 STS 处于 M1 阶段,因此您可能会遇到限制或意外问题。在这种情况下,请在 Spring 社区的Roo 或STS 论坛发帖。我们,SpringSource 和 Google 的工程师,乐意提供帮助并期待您的反馈。