在过去的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并不是一件简单的任务,如果你没有一套好的测试,它可能会更难,所以准备好花很多时间弄清楚如何替换旧的东西和解决问题。