我最近无意中部署了我们的游戏typrX的调试版本 (在www.typrx.com键入比赛 - 尝试它很有趣)。 它很快被纠正了,但我知道它可能会再次发生。挖完之后 在Google上,我找到了一些信息,如何创建2个不同的配置文件,一个 用于具有调试功能和用于的调试功能的开发模式 部署。这是我从Google IO演示文稿中找到的内容。是否 有谁有这个设置?有人可以解释如何运行吗?
MyAppCommon.gwt.xml
<module>
...
<define-property values="debug, release" name="app.config" />
<replace-with class="myapp.debug.DebugConsole">
<when-type-is class="myapp.Console" />
<when-property-is name="app.config" value="debug" />
</replace-with>
...
</module>
MyAppDebug.gwt.xml
<module>
...
<set-property name="app.config" value="debug" />
</module>
答案 0 :(得分:8)
使用特定模块进行调试的想法已经浮出一段时间,并且在this Google I/O presentation中也有提及(参见PDF中的幻灯片33或视频中的0h31m)。
基本思想是你有一个标准 GWT模块,第二个 debug 模块继承这个标准模块,配置一些属性,并使用GWT的延迟绑定调试时用特定实例替换一些类。
然后,您只需配置Maven / ant构建版本即可编译相应的模块,具体取决于您处于开发模式还是处于发布模式。
在我的项目中,我没有创建“app.config”延迟绑定属性,但我可能稍后会这样做。我做的是以下内容:
COM /示例/ MainModule.gwt.xml:
<module rename-to="mainModule">
<inherits name="com.smartgwt.SmartGwt" />
<!-- (other configurations) -->
<!-- gwt-log configuration -->
<define-property name="log_level" values="OFF,DEBUG" />
<inherits name="com.allen_sauer.gwt.log.gwt-log-common" />
<!-- Locales we want to compile for -->
<extend-property name="locale" values="en" />
<extend-property name="locale" values="fr_FR" />
</module>
COM /示例/ MainModuleDebug.gwt.xml:
<module rename-to="mainModule">
<inherits name="com.example.MainModule" />
<set-property name="user.agent" value="gecko1_8" />
<set-property name="locale" value="fr_FR"/>
<set-property name="log_level" value="DEBUG" />
</module>
注意: rename-to 属性在此处非常重要,因为您希望以完全相同的名称部署这两个模块。在开发期间编译时,您不希望必须更改所有html主机页面以指向调试模块。 的
<project>
(...)
<properties>
(...)
<!--
Suffix appended to the names of the GWT modules we compile in our child projects.
Empty by default, this suffix is overriden by some profiles to specify an alternative module to compile.
-->
<gwt.module.suffix></gwt.module.suffix>
<!-- We force GWT-recompilation by default (except when using the "gwtDebug" profile - see below for more info) -->
<gwt.compiler.force>true</gwt.compiler.force>
</properties>
(...)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<configuration>
(...)
<module>com.example.MainModule${gwt.module.suffix}</module>
</configuration>
</plugin>
(...)
<profiles>
<!-- This profile should be used during *DEVELOPMENT* -->
<profile>
<id>gwtDebug</id>
<properties>
<gwt.module.suffix>Debug</gwt.module.suffix>
<!-- Tells gwt-maven-plugin to recompile GWT modules only when necessary -->
<gwt.compiler.force>false</gwt.compiler.force>
</properties>
<activation>
<property>
<name>gwtDebug</name>
</property>
</activation>
</profile>
</profiles>
</project>
只需执行“maven clean install”即可编译生产模块。在开发中,您使用“mvn clean install -DgwtDebug”来激活gwtDebug配置文件,该配置文件又编译调试模块。
当然,您可以配置〜/ .m2 / settings.xml以始终定义“gwtDebug”属性...
同样的想法也适用于Ant。但我对它并不熟悉。
当你开始尝试使用调试模块覆盖真实模块时,你开始想象一些非常酷的可能性: