如果您已经开发了一个开发时间很长并且包含大量功能的大型项目(即不是一个简单的项目),您是否选择将项目拆分为多个maven模块或采用单模块方法?
例如,具有多模块结构,在运行maven命令时崩溃,如mvn gwt:eclipse(请参阅http://bit.ly/gs4Rmo)。我想这对单模块GWT项目来说效果很好。并且可能存在上述其他命令,这些命令存在多模块结构问题。
但是,多模块结构可以带来更快开发的好处,即如果将“服务器”与“客户端”模块分开,则可以单独编译业务逻辑(服务器)并将其打包到生成的Web存档中。编译GWT代码大约需要20秒,因此如果您只修改服务器软件包,从长远来看可以为您节省大量时间。
在使用多模块/单模块项目时,您遇到的其他情况如上所述?
谢谢!
答案 0 :(得分:6)
一些注意事项:
在开发服务器上,您不必“手动”编译代码:dev服务器自动编译代码并重新加载它。只需保持dev服务器运行,更改一些代码,然后在浏览器中重新加载页面。 (仅当您更改现有类并且不更改项目结构时才会这样)
多个maven模块与多个GWT模块无关。
如果您的代码在不同的环境中执行,您可能希望拥有多个GWT模块(=多个入口点):例如,您的网站和移动网站具有完全不同的代码库。然后,您将项目拆分为三个模块:web
,mobile
和common
。然后,您会在common
和web
中引用mobile
。
多个GWT模块的另一种情况是,如果您出于某种原因想要拥有多个主机(条目)HTML页面。在极少数情况下您需要此功能,例如在集成OpenID时需要进行重定向。另一种情况是你已经有了现有的Web页面,你只需要添加GWT来添加一些功能。
请勿将GWT项目拆分为多个模块,只是为了减少下载量:use Code Splitting而不是。
如果您的主要抱怨是长gwt编译时间,请阅读:How do I speed up the gwt compiler?
答案 1 :(得分:1)
我们从多个模块开始,最终合并为一个模块。其主要原因是维护模块是一个巨大的开销。每个模块都有一个pom来构建UI,RPC层和后端服务。因此,有30个模块,我们有90个maven项目需要管理。
合并模块将90个maven项目变为3个,具有一个父级pom。
这大大降低了维护开销并缩短了构建时间。 GWT的编译器非常慢,因此只需一次编译解析源文件一次而不是多次,这会使事情变得更快。
另一方面,单个模块意味着编译器会立即将所有内容融入内存。如果您在代码中插入任何分割点,这可能会导致分裂点无法忍受。因此,如果您打算拆分,可能值得考虑放置这些积分的位置并相应地安排您的项目。