大型GWT项目的结构

时间:2011-02-23 13:54:16

标签: gwt structure multi-module

上下文

  • 具有多maven模块或单一maven模块结构的大项目

问题

  • 你最终使用了多maven模块或单maven模块结构吗?

详细

如果您已经开发了一个开发时间很长并且包含大量功能的大型项目(即不是一个简单的项目),您是否选择将项目拆分为多个maven模块或采用单模块方法?

例如,具有多模块结构,在运行maven命令时崩溃,如mvn gwt:eclipse(请参阅http://bit.ly/gs4Rmo)。我想这对单模块GWT项目来说效果很好。并且可能存在上述其他命令,这些命令存在多模块结构问题。

但是,多模块结构可以带来更快开发的好处,即如果将“服务器”与“客户端”模块分开,则可以单独编译业务逻辑(服务器)并将其打包到生成的Web存档中。编译GWT代码大约需要20秒,因此如果您只修改服务器软件包,从长远来看可以为您节省大量时间。

在使用多模块/单模块项目时,您遇到的其他情况如上所述?

谢谢!

2 个答案:

答案 0 :(得分:6)

一些注意事项:

  1. 在开发服务器上,您不必“手动”编译代码:dev服务器自动编译代码并重新加载它。只需保持dev服务器运行,更改一些代码,然后在浏览器中重新加载页面。 (仅当您更改现有类并且不更改项目结构时才会这样)

  2. 多个maven模块与多个GWT模块无关。

  3. 如果您的代码在不同的环境中执行,您可能希望拥有多个GWT模块(=多个入口点):例如,您的网站和移动网站具有完全不同的代码库。然后,您将项目拆分为三个模块:webmobilecommon。然后,您会在commonweb中引用mobile

  4. 多个GWT模块的另一种情况是,如果您出于某种原因想要拥有多个主机(条目)HTML页面。在极少数情况下您需要此功能,例如在集成OpenID时需要进行重定向。另一种情况是你已经有了现有的Web页面,你只需要添加GWT来添加一些功能。

  5. 请勿将GWT项目拆分为多个模块,只是为了减少下载量:use Code Splitting而不是。

  6. 如果您的主要抱怨是长gwt编译时间,请阅读:How do I speed up the gwt compiler?

答案 1 :(得分:1)

我们从多个模块开始,最终合并为一个模块。其主要原因是维护模块是一个巨大的开销。每个模块都有一个pom来构建UI,RPC层和后端服务。因此,有30个模块,我们有90个maven项目需要管理。

合并模块将90个maven项目变为3个,具有一个父级pom。

这大大降低了维护开销并缩短了构建时间。 GWT的编译器非常慢,因此只需一次编译解析源文件一次而不是多次,这会使事情变得更快。

另一方面,单个模块意味着编译器会立即将所有内容融入内存。如果您在代码中插入任何分割点,这可能会导致分裂点无法忍受。因此,如果您打算拆分,可能值得考虑放置这些积分的位置并相应地安排您的项目。