开始使用SuperDevMode

时间:2012-07-06 06:06:51

标签: gwt

我只想使用superDevMode运行一个简单的应用程序来了解它的好处。 CodeServer成功启动,但它抱怨在UI中没有要编译的gwt模块。我按照以下步骤操作。

  1. 我开始使用GWT默认代码,它将在我们创建新项目时生成。然后我将其转换为Maven项目。
  2. 然后我修改了我的gwt.xml文件以添加链接器。这是我的gwt.xml

    的副本
    <module rename-to='superdevmode'>
    <inherits name='com.google.gwt.user.User' />
    <inherits name='com.google.gwt.user.theme.clean.Clean' />
    <entry-point class='superDevMode.client.SuperDevMode' />
    <add-linker name="xsiframe" />
    <set-configuration-property name="devModeRedirectEnabled"
    value="true" />
    </module>
    
  3. 我添加了代码服务器jar并设置了正确的类路径。

  4. Codeserver成功启动。

       The code server is ready.
       Next, visit: http://localhost:9876/
    

    当我启动UI时,我得到以下内容 enter image description here

    但是当我点击Dev Mode On时,我得到以下内容

    enter image description here

    我不知道我做错了什么。我的POM条目看起来像这样。

                  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>superDevMode</groupId>
    <artifactId>superDevMode</artifactId>
    <version>0.0.1-SNAPSHOT</version>
                 </project>
    

    如果我错了,请纠正我。

4 个答案:

答案 0 :(得分:64)

更新:v2.6看起来它将为superdevmode提供更好的示例启动器(请参阅http://www.gwtproject.org/release-notes.html#Release_Notes_2_6_0_RC1下的superdevmode)2.6现在任何一天都会发布。我正在使用RC3,看起来很好。更多信息:


虽然我很欣赏 SuperDevMode如何在Thomas的文章中发挥作用的细节,但真正需要的是逐步指导并解决一些问题。

这是一步一步的。有很多地方出错,SuperDev mode page不是很具体。希望这说清楚:

  1. 使用附加行配置模块.gwt.xml文件(您应将其放在模块定义的底部,即</module>之前):
  2. <add-linker name="xsiframe"/>
    <set-configuration-property name="devModeRedirectEnabled" value="true"/>
    <!-- enable source maps -->
    <set-property name="compiler.useSourceMaps" value="true" />
    
    1. 运行标准GWT编译过程 - 在Eclipse中这是“GWT Compile Project ...” - 这是您在部署GWT代码时通常所做的事情。毫无疑问,你有一个maven或ant命令也能做到这一点。

    2. 启动您在开发GWT代码时通常使用的常规网络服务器。例如,您使用普通DevMode的那个。我将这个称为localhost:8888 - 我将假设您通常启动的页面是index.html,因此http://localhost:8888/index.html显示您的GWT应用程序。 (您通常在该网址中有?gwt.codesvr=127.0.0.1:9997

    3. 启动SuperDevMode服务器(有关两种方法,请参阅本答案的底部)。您现在有两个Web服务器在不同的端口上运行。所以,假设SuperDevMode正在localhost:1234上运行。在这个答案的底部,我发布了一些启动SuperDevMode的方法。

    4. 将浏览器指向SuperDevMode服务器,http://localhost:1234。按照说明将两个快捷方式复制到地址栏

    5. 现在,将浏览器指向常规网络服务器,http://localhost:8888/index.html - 不要?gwt.codesvr=127.0.0.1:9997添加到网址 - 仅适用于NotSuper DevMode。 (即常规DevMode)

    6. 单击您在步骤5中复制的快捷方式链接“DevMode On”。它应该要求您选择要编译的模块,单击“编译”按钮。

    7. 如果您需要源图(请参阅Chrome脚本浏览器中的java源代码),则必须在Chrome中启用它。在我的Chrome版本(Ubuntu)中,Chrome控制台右下方有一个小齿轮(检查元素,然后查看浏览器窗口的右下角)。单击该按钮,然后找到“启用源映射”。重新加载页面,它现在应该显示源代码。


    8. 启动超级开发模式的两种方法:

      从命令行

      java -classpath $GWT_HOME/gwt-codeserver.jar:$GWT_HOME/gwt-dev.jar:$GWT_HOME/gwt-user.jar:app:./lib/*  com.google.gwt.dev.codeserver.CodeServer \
        -bindAddress 0.0.0.0 -port 1234 -src src -workDir work com.foo.MyModule
      

      来自Eclipse Laucher

      在Eclipse中,使用以下配置创建一个新的 Java Application 启动器( Web应用程序启动器!):

      主要类别:

      com.google.gwt.dev.codeserver.CodeServer
      

      计划参数:

      -src src -workDir ${workspace_loc:MyProject}/codeserver -port 1234 com.foo.MyModule
      

      -workDir是可选的

      虚拟机参数(根据项目的大小,可能需要这些参数。如果超级模式“编译”按钮(在浏览器中)在您点击后立即消失,似乎没有任何事情发生,它可能会由于内存不足而崩溃了)

      -Xmx1024m -Xms512m
      

      Classpath:将gwt-codeserver.jar,gwt-dev.jar和gwt-user.jar添加到启动类路径中(这些jar可以在GWT SDK安装目录中找到)。

答案 1 :(得分:8)

我采取了略微不同的方法。我从现有的Hello project开始,然后将其配置为在超级开发模式下工作。

A。为hello项目构建并部署war到tomcat。

B。将目标添加到Hello项目的build.xml中。

<target name="codeserver" depends="javac" description="Run Code Server mode">
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.codeserver.CodeServer">
        <classpath>
            <pathelement location="src"/>
            <path refid="project.class.path"/>
            <pathelement location="../../gwt-codeserver.jar" />
            <pathelement location="../../validation-api-1.0.0.GA.jar" />
            <pathelement location="../../validation-api-1.0.0.GA-sources.jar" />
        </classpath>
        <jvmarg value="-Xmx1024M"/>
        <arg value="-bindAddress"/>
        <arg value="0.0.0.0"/>
        <arg line="-port"/>
        <arg value="9876"/>
        <arg value="-workDir"/>
        <arg value="workDir"/>
        <arg line="-src"/>
        <arg value="src"/>
        <arg value="com.google.gwt.sample.hello.Hello"/>
    </java>
</target>

C。从命令提示符处使用ant codeserver运行代码服务器。

D。启动浏览器并导航至http://localhost:9876/创建书签

E。启动Chrome开发工具(F12)并启用SourceMaps。

F。启动浏览器并导航至http://localhost:8080/Hello

G。当您在页面http://localhost:8080/Hello

时点击“开发模式开启”书签

H。点击“编译”按钮,指示代码服务器将gwt源代码作为源地图加载到浏览器。

我。 Hurray提取了java文件,可以在Chrome开发者控制台的来源标签中看到。

J。找到Hello.java。单击行号以设置调试点@ Window.alert("Hello, AJAX");

K。点击Hello World中的“Click Me”。代码在Chrome中的java文件的Debug点停止!!!!!!!!乌拉。

参考屏幕截图 - http://geekbybit.blogspot.in/2013/03/diy-working-with-gwt-codeserver-tomcat.html

enter image description here

答案 2 :(得分:4)

这里有一个非常好的解释: http://blog.ltgt.net/how-does-gwts-super-dev-mode-work/

您需要将小册子拖到浏览器中。然后像平常一样开始你的应用在没有“?gwt.codesvr = 127.0.0.1:9997”部分的浏览器中打开您的应用程序。现在您可以使用小册子启动SuperDevMode。

希望这有帮助。

答案 3 :(得分:0)

使用多模块maven gwt项目,您需要在运行配置中添加源位置(基础项目和模块):

-src src/main/java/ -src ${workspace_loc:MyNewModule}/src/main/java/ com.foo.MyModule