tomcat - 在 Tomcat 上运行 Errai 时如何启用热重载?
问题描述
我正在使用 Errai 4 开发一个项目,并且像往常一样我可以运行“mvn gwt:run”并且热重载就可以了,即我更改模型或视图,我只需要刷新浏览器。
现在我需要它,但在 Tomcat 7 之上运行我的 Errai 应用程序。
带有 Tomcat 的项目类似于https://github.com/stbland/errai-tutorial-tomcat
mvn gwt:run
问题是当我只使用 only或类似方式在前端进行更改时,如何使热重载与 Tomcat 7 一起工作。
一步一步的最终解决方案:
解决此问题的信息:
安装原项目
对于这个例子,我们将使用错误教程
- git clone https://github.com/Tlaloc-Es/errai-tutorial.git --single-branch --branch develop
- cd 错误教程
- mvn 安装
在 Tomcat 上运行
- git clone https://github.com/Tlaloc-Es/errai-tutorial-tomcat.git --single-branch --branch develop
- cd 错误教程-tomcat
- mvn tomcat7:run-war
听力变化
- cd 错误教程
- mvn gwt:编译
- mvn gwt:运行
现在您可以在您的网络浏览器中打开http://localhost:8080/errai-tutorial/
要进行热重载,您需要在项目中导入此类:
并以这种方式 ( SuperDevModeHelper.devModeOn()
) 的快捷方式调用它,如下所示:
解决方案
看看这个原型https://github.com/tbroyer/gwt-maven-archetypes/
modules-webapp 配置 tomcat 和 gwt 一起工作。热重载之所以有效,是因为 gwt:codeserver 会生成一个特殊的引导程序(your-app.nocache.js),它会立即运行 gwt 编译并在完成时重新加载。要使其工作,您需要将 gwt:codeserver 生成的 launcherDir 加载到 tomcat 上下文中,这是在此原型中使用context.xml完成的。
或者,您可以将一些编译触发器添加到您自己的应用程序中,以便您可以使用快捷方式触发编译。这就是启动编译 ( DevModeHelper ) 所需的全部内容。只需在您的应用程序入口点添加一个快捷方式处理程序并调用devModeOn()
. 如果您不想在最终编译中添加它,请仅在System.getProperty("superdevmode").equals("on")
is时安装事件侦听器true
。在这种情况下,第一次使用经典Dev Mode On
书签,然后使用您的自定义快捷方式。我们使用这种策略并且效果很好。
推荐阅读
- c# - 属性 ... 无法映射,因为它属于“字符串 []”类型,不是受支持的原始类型或有效的实体类型
- autodesk-forge - Autodesk forge 设计自动化 Civil 3d
- python - Python Boto3 s3之间的跨账户转账报错
- java - 尝试模拟在方法内创建的对象时 Mockito.spy 出现 NullPointerException
- python - 为什么 makeblastdb 不能处理语法错误
- html - 我正在使用 django 清脆的表单我如何更改此文本以从顶部开始并在行满时到达下一行
- ios - How to properly add a header to my collection view in xamarin.tvos
- javascript - Angular/ASP:NET - 无法从 base64 上传创建的图像
- flutter - 颤动:listTile 抽屉中的下拉菜单
- excel - VBA 如何确定在列表框中选择了哪一行?