【问题标题】:Migrating existing GWT project to new GWT version将现有 GWT 项目迁移到新 GWT 版本
【发布时间】:2013-06-06 19:15:01
【问题描述】:

过去 5 年我一直负责开发和维护一个 GWT 项目,该项目由 6 个不同的 WebApp 组成。该项目使用 GWT 1.5 并使用 ant 构建(适用于 dev/war 模式)。这些 webapp 部署在 apache-tomcat 上,生产站点运行 5.5 版,而我们运行(用于测试)7.0 版。

为了强调用户体验,我想将 GWT 版本迁移到更新的版本(目前我不知道);我已经阅读了很多关于迁移、不推荐使用的 API、从一个版本到另一个版本的改进的内容,但我仍然有处理新项目布局本身的结构性问题。

目前布局如下:

WebXXX 
-src
 -net.yyy.webxxx
   -common
    -client
    -server
    -public
    -Common.gwt.xml
   -module1
    -client
    -server
    -public
    -module1.gwt.xml
   -[...]
-test
-build
 -build.xml
 -buildModule1.xml
 -[..]
-Dependencies(SVN_Externals)
-www
-compile-all-modules.xml
-compile-module1.xml
-WebXXXHosted.xml
-[..]

为了明确一点,fodler Dependencies 是一个占位符,用于将 Workspace 源与外部小部件库链接起来。该库是在编译时构建的(当构建所有模块或仅在 ant 任务中构建一个模块时),生成的 jar 将注入模块 WEB-INF/lib 目录。该小部件库确实使用 gxt.1.1.1 和 gwt-incubator 1.5。

多年来,为每个新的 WebApp 编写一个新的 ant 任务似乎是解决方案,但现在我们也在使用 maven,我想知道是否必须在迁移之前将项目转换为 maven 项目,或者我是否必须现在可以跳过 Maven 转换。

由于我认为 maven 不是绝对必需的,并且由于该项目包含几个自定义的 ant 任务以使其运行(在开发模式下),所以我也想知道我是否可以(相反)迁移相关的 GWT jar 版本为这样我就不必重写所有的 UI,尽管我知道我将进行重大替换并运行大量测试。

请随意告诉我我可以走的路(maven 与否,我应该迁移到的 gwt 版本,相关的 gxt 版本(如果它仍然相关)),因为我完全处于黑暗中!

谢谢大家, 干杯!

【问题讨论】:

    标签: maven gwt ant migration gxt


    【解决方案1】:

    一步一个脚印。

    • 始终使用最新版本(并在新版本出现时尽快迁移)。话虽如此,有报道称 2.5 和 2.5.1 在 GWT-RPC 中有一些回归,所以如果它不起作用,请尝试使用 2.4(但先尝试 2.5.1!)
    • 您还必须更新您的 GXT 依赖项(我不知道他们如何处理 Sencha 的向后兼容性以及它将在多大程度上破坏您的代码 - 或不 - 并再次尝试保持最新状态)
    • gwt-incubator 已被长期弃用,因此请准备好替换一些小部件,从长远来看,您将希望完全删除该依赖项。

    • 在升级 GWT 之前不要迁移到 Maven,除非升级过多地破坏了您的 Ant 任务(然后尝试迁移到 Maven,然后升级 GWT;但是 1.5 是一个非常旧的版本,所以我不知道如何很好,它适用于 Maven)。

    回复。 Maven,GWT 也将很快使用 Maven,并将提供一个官方插件。该插件的 Alpha 版本可以在 https://github.com/tbroyer/gwt-maven-plugin 找到(我现在收到了相当积极的反馈);或者您可以使用 CodeHaus 的 gwt-maven-plugin,或者简单地使用 exec-maven-plugin(或 antrun-maven-plugin)调用 GWT 编译器。至于项目布局,请参阅http://blog.ltgt.net/announcing-gwt-maven-archetypes-project,这是官方 GWT 插件将基于的布局(同样,到目前为止,大多是积极的反馈)。

    【讨论】:

    • GXT 1.1 相对古老——我认为 GXT 2 是在 GWT 1.6 之前不久发布的,虽然与 GXT 1 相比它有相当小的变化,但版本 3 进行了实质性的改变。也就是说,主要的向后兼容问题将在 GWT 2.2 中的 JClassType 类->接口转换中,为此可能需要重新编译 gxt 1.1 jar 中的一些类。
    【解决方案2】:

    如果您打算同时迁移到 gwt 和 maven,我将首先将现有项目迁移到 maven。您必须确保所有依赖项都在 maven 存储库中,或者您知道如何处理本地存储库。一旦你把所有东西都放在模块中,你可以在 eclipse 中导入项目(也许你需要一个旧的 gwt 插件)并运行所有任务,我会尝试通过选择适当的依赖项来迁移模块。

    我认为使用 maven 更新依赖项比使用 ant 更容易,但当然如果您觉得更方便,可以选择其他方式。

    无论如何,将 gwt 应用程序从 1.5 迁移到 2.5.1 的任务可能很困难。首先,您必须了解 gwt 的演变过程,才能知道哪些问题可能会出现在您的应用程序中(新的小部件接口、处理程序等)。

    您依赖于几年前已停止使用的 gwt-incubator,也许您有一个可以与 gwt-2.5.1 一起使用的构建,但可能有很多东西不再适用。有些功能已从孵化器转移到 gwt,如单元格列表、日期选择器等,因此您必须使用 gwt 中的新内容重写代码。

    你的项目依赖于一个旧的 gxt 版本,他们对他们的 api 做了很多更改,我认为你也必须处理代码中的很多更改。

    总之,mavenizing 一个 ant 项目并不是那么困难,而且你在网络上有很多信息,但是如果你没有一套好的测试,将 gwt 应用程序从 1.5 移植到 2.5.1 并不是一件容易的事这可能会更难,因此请准备好花大量时间弄清楚如何更换旧东西并解决问题。

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多