更新:从 GWT 2.7 开始,默认情况下 DevMode 实际上会自动使用 Super Dev Mode,因此您只需像以前一样启动 DevMode,应用程序将在页面(重新)加载时自动(重新)编译。
一个区别是.nocache.js
生成了一个特殊文件,因此您必须确保浏览器加载此特定文件;要调试远程服务器(就像您之前可以使用运行的 DevMode 一样-noserver
),您必须使用如下所述的小书签。
要在超级开发模式下运行,您必须经过 2 个准备步骤:
超级开发模式仅适用于xsiframe
链接器,因此请确保您也有以下行.gwt.xml
:
<add-linker name="xsiframe" />
该链接器对于生产使用是安全的(Google 在任何地方都使用它,略微定制),因此请随时为您的所有项目打开它(它结合了最好的std
链接器 - 默认链接器 - 和xs
链接器,没有它们的缺点)。
注意:该链接器将是 2.7 中的默认值
如果您使用 2.6.0 之前的 GWT 版本,您还必须在您的.gwt.xml
:
<set-configuration-property name="devModeRedirectEnabled" value="true" />
否则,如果您打算从不同于127.0.0.1
or的 URL 使用超级开发模式localhost
,那么您必须将主机列入白名单。这是使用正则表达式完成的,例如:
<set-configuration-property name="devModeUrlWhitelistRegexp" value="http://(mymachinename|192\.168\.5\.151)(:\d+)?/.*" />
见https://stackoverflow.com/a/21938574/116472
编译并将您的应用程序部署到您附近的 Web 服务器(如果您使用.gwt.xml
特定于超级开发模式的文件,请确保编译该模块:xsiframe
链接器和devModeRedirectEnabled
属性对于该编译步骤是必需的!)
如果您使用 GWT-RPC,请将系统属性设置为gwt.codeserver.port
您将在其上运行 Super Dev Mode 的端口(默认为9876
),以便您的服务器可以直接从 Super Dev Mode 下载 RPC 序列化策略。
如果你在不同的机器上运行它们,你必须getCodeServerPolicyUrl
在你所有的RemoteServiceServlet
s. 但请考虑安全隐患,如javadoc 中所述
完成后,您可以开始超级开发模式会话:
使用与启动com.google.gwt.dev.codeserver.CodeServer
DevMode 相同的类路径启动(即gwt-user.jar
,gwt-dev.jar
以及所有客户端依赖项:例如 GXT、GIN+Guice、GWTEventBinder 等),但添加gwt-codeserver.jar
; 并将模块的名称作为参数传递。
它将首先编译您的模块以检查它是否可以实际编译;您可以通过-noprecompile
作为参数传递来跳过此步骤。
如果您从未运行过 Super Dev Mode,请转到http://localhost:9876
并将Dev Mode On和Dev Mode Off链接添加到您的书签(将它们拖放到您的书签栏)。
注意:如果您使用 Maven,您应该可以使用mvn gwt:run-codeserver
(注意:在 2.6.0 之前的插件版本中有一个错误,您实际上必须在其中运行mvn process-classes gwt:run-codeserver
;这在 2.6.1 中已修复)。
在浏览器中打开您的应用程序,然后点击Dev Mode On小书签。在打开的弹出窗口中单击编译按钮。它应该刷新页面并从而CodeServer
不是从您的服务器加载 JS。您的浏览器的开发工具也应该加载 SourceMap,以便您可以查看和调试(逐步)您的 Java 代码。
当你想测试你对代码所做的更改时,再次点击Dev Mode On小书签。与 DevMode 相反,刷新页面不会使其运行新代码;代码必须首先重新编译,这是在Dev Mode On书签后单击Compile按钮时完成的(注意:您也可以直接为Compile按钮添加书签以保存单击,但请注意它已绑定到您的模块,因此您如果您在多个模块上工作,则需要多个书签)。
完成后,点击Dev Mode Off以确保切换回生产模式,然后关闭CodeServer
进程(CtrlC在控制台中应该可以工作)。
官方文档位于http://www.gwtproject.org/articles/superdevmode.html
另请参阅http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/了解有关如何 Super开发模式确实有效。