在GWT中以托管模式更新依赖关系

时间:2013-08-22 12:29:39

标签: maven gwt gwt-hosted-mode

我将GWT webapp拆分为两个Maven项目,其中一个是对另一个的依赖。每次我更改依赖项中的某些内容并且我在托管模式下运行webapp时,我必须重建子项目并重新启动托管模式以应用更改。这需要花费很多时间,所以我想问你是否有办法使用依赖的“实时”版本制作GWT?

3 个答案:

答案 0 :(得分:1)

有两种情况:

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

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

    实际上为gwt-maven-pluginMGWT-332打开了一个错误,在运行反应堆构建时自动执行此操作。对于即将到来的官方gwt-maven-plugin(从头开始重写,独立于CodeHaus Mojo插件),我也mused关于真正需要什么。

    如果您的依赖关系不是来自反应堆构建,那么您就可以独立完成:您选择使其完全不同,这就是它的行为方式:您必须释放它(甚至是快照) )每次你对它进行更改,并在你的应用程序中使用新版本(这意味着重新启动DevMode)。

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

答案 1 :(得分:0)

从webapp下的主应用程序li​​b文件夹中删除依赖的其他应用程序jar文件。 然后,如果已将其添加到主应用程序类路径中,Eclipse应使用工作空间中的其他项目来解析依赖关系。

答案 2 :(得分:0)

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