【问题标题】:Update dependencies while in hosted mode in GWT在 GWT 中的托管模式下更新依赖项
【发布时间】:2013-08-25 04:27:26
【问题描述】:

我有一个 GWT webapp 分成两个 Maven 项目,其中一个是另一个的依赖项。每次我更改依赖项中的某些内容并在托管模式下运行 webapp 时,我都必须重建子项目并重新启动托管模式以应用更改。这需要很多时间,所以我想请问您是否有任何方法可以使用“实时”版本的依赖项来制作 GWT?

【问题讨论】:

  • 你是如何运行 DevMode 的?您的问题是关于客户端代码还是服务器端代码?
  • 我正在使用 mvn gwt:run 运行托管模式。依赖是另一个 GWT 客户端代码。

标签: maven gwt gwt-hosted-mode


【解决方案1】:

有两种情况:

  • 对于服务器端代码,假设你使用 DevMode 的嵌入式服务器,重建应用然后刷新服务器应该足够了

  • 对于客户端代码,AFAICT,您必须使用依赖模块的源和输出目录,而不是包含它们的 JAR(GWT 将从类路径加载源,但显然它只会看到修改后的源如果它来自文件夹而不是 JAR;至少这是我在测试中发现的)。这违反了The Maven Way™,但目前唯一的解决方案是使用一个特殊的配置文件,它将导入依赖项目的源代码作为你正在运行的项目的源代码。您可以在my archetypes 中查看相关示例。

    实际上,gwt-maven-pluginMGWT-332 存在一个错误,可以在运行反应堆构建时自动执行此操作。我还 mused 谈到了真正需要的东西,即将发布的官方 gwt-maven-plugin(从头开始重写,独立于 CodeHaus Mojo 插件)。

    如果你的依赖不是来自于 reactor 构建,那么你就只能靠自己了:你选择让它完全不同,所以它的行为方式就是这样:你必须释放它(甚至是快照) 每次您对其进行更改时,并在您的应用中使用新版本(这意味着重新启动 DevMode)。

    这可以通过自行运行 DevMode 来规避,无需 gwt-maven-plugin 的帮助。不过,您需要自己管理类路径(使用 Google Plugin for Eclipse,我想您可以简单地编辑启动配置以将依赖项项目的源文件夹添加到类路径中,在 Maven 提供的类路径之前,这将引用 JAR)。

【讨论】:

    【解决方案2】:

    从 webapp 下的主应用程序 lib 文件夹中删除依赖的其他应用程序 jar 文件。 如果您已将依赖项添加到主应用程序类路径中,Eclipse 应该使用工作区中的其他项目解决依赖关系。

    【讨论】:

    • 我正在使用Netbeans,但是依赖已经是一个项目(不是jar文件)。
    【解决方案3】:

    由于 GWT 构建需要很长时间,我们在 JRebel 许可上投入了一些资金。我们的后端和 GWT 前端有两个独立的 Eclipse 项目。 JRebel 会自动重新加载类,我在编写代码时无需重新启动本地服务器。事实证明,这可以节省大量时间。绝对值得投资。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多