GWT SuperDevMode无法看到更改

时间:2014-12-11 22:29:28

标签: java maven gwt intellij-idea

我试图设置我的项目以使用gwt maven插件。它编译得当,但是我无法使用开发模式或超级开发模式进行开发。

我的设置如下:

按顺序配置Maven

mvn clean install
mvn tomcat7:run-war-only
mvn gwt:run-codeserver

GWT版本:2.6.1

IDE:Intellij 14 Community Edition

当我对客户端java文件进行更改并单击"编译"代码服务器页面上的按钮,它们没有反映在网页上。我怀疑代码服务器没有看到我改变的相同来源。具体来说,我认为它正在寻找在目标/ {project-name} / *

中编译的资源

以下是我正在使用的POM文件的片段。

    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/java</directory>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>



    <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/classes</outputDirectory>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${maven.compiler.plugin.version}</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <encoding>${project.build.sourceEncoding}</encoding>
                <!--compilerArgument>-proc:none</compilerArgument-->
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>
            <configuration>
                <path>${tomcat.context}</path>
                <port>${tomcat.webport}</port>
                <ajpPort>${tomcat.ajpport}</ajpPort>
                <contextReloadable>true</contextReloadable>
            </configuration>
        </plugin>

        <!-- GWT Maven Plugin -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>${maven.gwt.plugin.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <draftCompile>true</draftCompile>
                <hostedWebapp>${webappDirectory}</hostedWebapp>
                <noServer>true</noServer>
                <port>${tomcat.webport}</port>
                <runTarget>${tomcat.context}/index.html</runTarget>
                <!--codeServerWorkDir>${webappDirectory}</codeServerWorkDir-->
                <copyWebapp>true</copyWebapp>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>exploded</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <webappDirectory>${webappDirectory}</webappDirectory>
            </configuration>
        </plugin>



    </plugins>

</build>

任何帮助都将不胜感激!!

3 个答案:

答案 0 :(得分:4)

由于您将src/main/java列为<resource>,因此将其文件复制到${project.build.outputDirectory},并且该文件首先出现在类路径中,因为您可以从<resource>过滤文件并且<source><resource>相交(这是这种情况)。见http://jira.codehaus.org/browse/MGWT-290

所以:

  • 从项目资源中删除src/main/java
  • 从项目资源中删除*.java个文件(因此至少它们不会被复制到输出目录并且不会影响src/main/java
  • 每次更改mvn resources:resources中的文件时,
  • 或运行src/main/java(因为您可能需要过滤,因此您必须使用src/main/resources中的文件);这可以通过您的IDE或其他工具(例如watchman)自动完成。

答案 1 :(得分:2)

我会将项目升级为使用gwt-2.7.0和gwt-maven-2.7.0,然后在servlet容器中的app中运行superdev模式没什么特别的,只需运行mvn gwt:run并指向您的浏览器为http://localhost:8888,然后每次更改代码时,只需在浏览器中点击刷新即可重新编译应用程序。

正如您所看到的那样,它非常简单,您可以更快地在2.7.0中重新编译。

答案 2 :(得分:1)

尝试了所有可能的论坛&#39;建议和各种代码服务器启动参数失败,我发现触发刷新而不重新启动任何服务器的唯一方法是再次点击书签&#39;开发模式关闭&#39;然后是开发模式开启&#39;然后编译&#39;按钮......代码服务器以递增方式重新编译已更改的java源! (开发模式快捷方式是您应该从代码服务器主页(如http://localhost:9876拖动到浏览器书签中的那些快捷方式)。

使用&#34; Google插件for Eclipse&#34;页面刷新就足够了(== GPE,在2018年1月被弃用)并且 - 似乎 - 不再是&#34; GWT Eclipse插件&#34; (取代GPE)(欣赏措辞的细微差别!)