将现有GWT项目迁移到新GWT版本

时间:2013-06-06 10:13:53

标签: maven gwt ant migration gxt

过去5年我一直负责开发和维护由6种不同WebApp组成的GWT项目。该项目使用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版本(如果它仍然相关)),因为我完全黑暗!

谢谢大家, 干杯!

2 个答案:

答案 0 :(得分: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 Compiler。至于项目布局,请参阅http://blog.ltgt.net/announcing-gwt-maven-archetypes-project,这是官方 GWT插件将基于的布局(到目前为止,主要是正反馈)。

答案 1 :(得分: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中做了很多更改,我认为您还必须处理代码中的大量更改。

总之,对一个蚂蚁项目进行整理不是那么困难,你在网上有大量的信息,但如果你没有一套好的测试,那么从1.5到2.5.1移植一个gwt应用程序并不是一件容易的事。它可能会更难,所以要准备好花很多时间来弄清楚如何更换旧东西并解决问题。