我使用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
选项。
答案 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文件,然后将您所做的任何更改迁移回工作区版本。