【问题标题】:Structure for big GWT project大型 GWT 项目的结构
【发布时间】:2011-07-02 18:49:58
【问题描述】:

上下文

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

问题

  • 你最后是使用多maven-module还是单maven-module结构?

详情

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

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

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

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

谢谢!

【问题讨论】:

  • 你是指多个gwt模块还是多个maven模块?两者有很大区别。

标签: gwt structure multi-module


【解决方案1】:

几点说明:

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

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

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

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

  5. 不要为了减小下载大小而将 GWT 项目拆分为多个模块:改为use Code Splitting。

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

【讨论】:

  • 感谢您一贯全面的回复!
  • 这不是为了减少下载大小,我只是想要更快的开发速度,从长远来看,客户端逻辑和服务器逻辑之间的代码是分开的。
  • 原因是,如果我更改了业务逻辑中的某些内容并且所有代码都在同一个 maven 项目中(不要与 GWT 模块混淆),我必须执行“mvn package”还编译 GWT 代码(此处丢失 20 秒)。另一个原因是,如果我想将服务器端代码托管在另一个 Web 容器(即 tomcat)中,拥有“服务器”maven 项目将有很大帮助。我还没有多个环境,所以不需要多 GWT 模块
  • 我不是 maven 专家,但拥有(因为您通过 maven 编译/运行)两个模块似乎是合乎逻辑的:server 和 gwt
  • 我们在 server+gwt 项目中使用 maven,但是在开发过程中我总是通过 Intellij 的运行配置运行,确切的原因是它不需要完全编译
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2013-12-31
    • 1970-01-01
    • 2011-04-04
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多