过去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版本(如果它仍然相关)),因为我完全黑暗!
谢谢大家, 干杯!
答案 0 :(得分:1)
一步一步。
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应用程序并不是一件容易的事。它可能会更难,所以要准备好花很多时间来弄清楚如何更换旧东西并解决问题。