Maven 在GWT中处于托管模式时更新依赖项

Maven 在GWT中处于托管模式时更新依赖项,maven,gwt,gwt-hosted-mode,Maven,Gwt,Gwt Hosted Mode,我将一个GWT webapp拆分为两个Maven项目,其中一个是对另一个的依赖。每次我在依赖项中更改某些内容,并且在托管模式下运行webapp时,我都必须重建子项目并重新启动托管模式,以便应用更改。这需要很多时间,因此我想问您是否有任何方法可以使用依赖项的“实时”版本制作GWT?从webapp下的主应用程序库文件夹中删除依赖的其他应用程序jar文件。 然后,如果已将该依赖项添加到主应用程序类路径中,Eclipse应使用工作区中的其他项目解决该依赖项。有两种情况: 对于服务器端代码,假设您使用D

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

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

有两种情况:

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

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

    实际上,gwt-maven插件有一个bug,在运行reactor构建时自动执行该操作。我还了解了即将发布的官方
    gwt-maven插件
    (从头重写,独立于CodeHaus-Mojo插件)真正需要什么

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

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


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

您如何运行DevMode?您的问题是关于客户端还是服务器端代码?我正在使用mvn gwt:run运行托管模式。依赖项是另一个GWT客户端代码,我使用的是Netbeans,但依赖项已经是一个项目(不是jar文件)。