我将GWT webapp拆分为两个Maven项目,其中一个是对另一个的依赖。每次我更改依赖项中的某些内容并且我在托管模式下运行webapp时,我必须重建子项目并重新启动托管模式以应用更改。这需要花费很多时间,所以我想问你是否有办法使用依赖的“实时”版本制作GWT?
答案 0 :(得分:1)
有两种情况:
对于服务器端代码,假设您使用DevMode的嵌入式服务器,重建应用程序然后刷新服务器就足够了
对于客户端代码AFAICT,您必须使用依赖模块的源和输出目录而不是包含它们的JAR(GWT将从类路径加载源,但显然它只会看到修改后的来源,如果它来自文件夹而不是JAR;至少这是我在测试中找到的)。这与The Maven Way™相反,但到目前为止唯一的解决方案是使用一个特殊的配置文件,它将导入依赖项目的源作为您正在运行的项目的源。您可以在my archetypes中看到相关示例。
实际上为gwt-maven-plugin
,MGWT-332打开了一个错误,在运行反应堆构建时自动执行此操作。对于即将到来的官方gwt-maven-plugin
(从头开始重写,独立于CodeHaus Mojo插件),我也mused关于真正需要什么。
如果您的依赖关系不是来自反应堆构建,那么您就可以独立完成:您选择使其完全不同,这就是它的行为方式:您必须释放它(甚至是快照) )每次你对它进行更改,并在你的应用程序中使用新版本(这意味着重新启动DevMode)。
可以通过自己运行DevMode来避免这种情况,而无需gwt-maven-plugin
的帮助。你可以自己管理类路径(使用Google Plugin for Eclipse,我想你可以简单地编辑启动配置,将依赖项目的源文件夹添加到类路径,在Maven提供的类路径之前,参考JAR)。
答案 1 :(得分:0)
从webapp下的主应用程序lib文件夹中删除依赖的其他应用程序jar文件。 然后,如果已将其添加到主应用程序类路径中,Eclipse应使用工作空间中的其他项目来解析依赖关系。
答案 2 :(得分:0)
由于GWT构建需要很长时间,我们在JRebel许可证上投入了一些资金。我们的后端和GWT前端有两个独立的Eclipse项目。 JRebel自动重新加载类,我在编写代码时从不需要重新启动本地服务器。事实证明这是一个美好的节省时间。绝对值得投资。