GWT DevMode不会重新加载css文件的更改

时间:2013-08-13 14:11:45

标签: css gwt gradle gwt-dev-mode

我使用Gradle作为构建管理建立了一个GWT项目,一切都很好。
我可以在eclipse中将我的项目部署到我的本地tomcat,并且应用程序按预期运行。 但是如果我启动DevMode并在我的css资源中更改某些东西(它们被绑定为带有@Source批注的CssResource类),GWT DevMode就不会捕获它,并且不会考虑css更改。 我错过了什么吗?我希望DevMode能够在开发过程中检测.css文件的变化,而无需再次运行gwt编译。

以下是我如何使用css资源的示例:

public interface XOFooterPanelResource extends FooterPanelResource, ClientBundle {
    @Override
    @Source("XOFooterPanel.css")
    XOFooterPanelStyle style();

    @Override
    @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
    ImageResource footerPanelBackground();

    @Override
    @ImageOptions(repeatStyle = RepeatStyle.Horizontal)
    ImageResource footerPanelBackgroundEndUser();

    @Override
    @Source("footerDelimiter.jpg")
    ImageResource footerDelimiter();
}

public interface XOFooterPanelStyle extends FooterPanelStyle, CssResource {

}

正如你所看到的,我有一个扩展CssResource的XOFooterPanelStyle接口。它在XOFooterPanelResource中使用 - 它扩展了ClientBundle - 使用@Source注释和我的CSS文件的名称。

这是我的gradle构建文件的一部分,它负责启动DevMode:

javaexec {
        main = 'com.google.gwt.dev.DevMode'

        jvmArgs = ['-Xmx2048M', '-XX:MaxPermSize=1024M']

        classpath {
            [
                sourceSets.main.java.srcDirs,
                // Java source
                sourceSets.main.output.resourcesDir,
                // Generated resources
                sourceSets.main.output.classesDir,
                // Generated classes
                sourceSets.main.compileClasspath       // Deps
            ]
        }

        args = [
                '-startupUrl', 
                'myapp/index.html', 
                '-noserver',
                '-war',
                'build/devmode',
                '-gen',
                'gen'
            ]
        ext.gwtModules.each {
            args += it
        }
    }

如前所述,我在eclipse中使用tomcat来运行应用程序,因此设置了-noserver选项。

1 个答案:

答案 0 :(得分:0)

除非您直接更改tomcat引用的css文件,否则您将看不到开发模式中的更改。我相信当您在eclipse中通过tomcat进行部署时,您的代码不会直接从eclipse项目工作区引用,而是将副本移动到tomcat webapps文件夹中。

我不确定这个标准方法是什么。我觉得必须有一个从eclipse刷新静态资源到tomcat实例的选项,但我还没有调查过。

在我需要时,我有两种解决问题的方法:

1)您可以将CSS代码放入ui.xml文件中,这应该由devMode获取 Tutorial on how to add css to your ui.xml

2)您也可以直接修改webapps文件夹中的css文件,然后将您所做的任何更改迁移回工作区版本。