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



在过去的5年中,我一直负责一个由6个不同的WebApps组成的GWT项目的开发和维护。该项目使用GWT 1.5,并使用ant构建(用于dev/war模式)。这些web应用部署在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是一个占位符,用于将工作区源与外部小部件库链接起来。这个库是在编译时构建的(在构建ant任务中的所有模块或一个模块时),生成的jar被注入到模块WEB-INF/lib目录中。这个小部件库使用了gext .1.1.1和gwt-incubator 1.5。

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

因为我猜maven不是绝对需要的,因为项目包括几个定制的ant任务让它运行(在开发模式下),我也想知道我是否可以(相反)迁移相关的GWT jar在一个版本中,这样我就不必重写所有的UI,虽然我知道我将有主要的替换做和广泛的测试运行。

请随意告诉我我应该怎么做(maven或不是,gwt的版本我应该迁移,相关的gxt版本(如果它仍然相关)使用),因为我完全在黑暗中!

谢谢大家。干杯!

一步一步来

  • 始终使用最新版本(并在新版本发布时尽快迁移)。也就是说,有报告说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(或anrun -maven-plugin)调用GWT编译器。至于项目布局,请参阅http://blog.ltgt.net/announcing-gwt-maven-archetypes-project,这是官方 GWT插件将基于的布局(再一次,到目前为止,大多数都是积极的反馈)。

如果您计划同时迁移到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上做了很多改变,我认为你也必须在你的代码中处理很多变化。

总而言之,优化一个ant项目并不是那么困难,你在网络上有足够的信息,但是将一个gwt应用程序从1.5移植到2.5.1并不是一件简单的任务,如果你没有一套好的测试,它可能会更难,所以准备好花很多时间弄清楚如何替换旧的东西和解决问题。

相关内容

  • 没有找到相关文章

最新更新