3

语境

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

问题

  • 您最终使用了多 maven-module 还是单 maven-module 结构?

细节

如果您从事过一个开发周期长且包含大量功能的大型项目(即不是一个琐碎的项目),您是选择将项目拆分为多个 maven 模块还是采用单模块方法?

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

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

在处理多模块/单模块项目时,您还遇到过哪些类似上述情况的情况?

谢谢!

4

2 回答 2

6

几点注意事项:

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

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

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

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

  5. 不要为了减少下载大小而将 GWT 项目拆分为多个模块:请改用代码拆分

  6. 如果您的主要抱怨是 gwt 编译时间长,请阅读:如何加快 gwt 编译器的速度?

于 2011-02-23T14:21:09.700 回答
1

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

合并模块将 90 个 maven 项目变成 3 个,其中包含一个父级 pom。

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

另一方面,单个模块意味着编译器会立即将所有内容存储到内存中。如果您在代码中插入任何分割点,这可能会使找到分割点的速度变得难以忍受。因此,如果您打算拆分,可能值得考虑将这些点放在哪里并相应地安排您的项目。

于 2011-02-23T17:32:20.817 回答