0

在过去的 5 年里,我一直负责一个 GWT 项目的开发和维护,该项目由 6 个不同的 WebApp 组成。该项目使用 GWT 1.5 并使用 ant 构建(适用于 dev/war 模式)。这些 webapps 部署在 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版本(如果它仍然相关)使用),因为我完全处于黑暗中!

谢谢大家,干杯!

4

2 回答 2

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 插件将基于的布局(同样,到目前为止大多是积极的反馈)。

于 2013-06-06T10:51:08.927 回答
0

如果您打算同时迁移到 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 并不是一件容易的事,如果你没有一套好的测试,它可能是更难,所以要准备好花很多时间弄清楚如何更换旧东西并解决问题。

于 2013-06-06T11:15:01.273 回答