Gwt Css 和 uibinder no-obfuscation 不工作

Gwt Css and uibinder no-obfuscation not working

我有一个配置为 属性:

的 Gwt 小部件库
<set-configuration-property name="CssResource.style" value="stable-notype"/>

预计将保留原始 css 名称,然后是 css 文件(示例)

.invader {
    width: 400px;
    height: 400px;
    background-color: #DBDBDB;
}

.invader .button {
    background-image: url('merged.png');
    width: 64px;
    height: 64px;
    background-position: 0px 64px;
    background-color: #BA6622;
}

之后,生成了一个css资源

interface WidgetStyle extends CssResource {
  String button();
  String invader();
}

当我在 WidgetStyle 实例 (and/or) 上调用 ensureInjected() 时,使用样式 programatically/in ui:binder 例如

<ui:style src="WidgetStyle.css" field="style" />
<g:HTMLPanel styleName="{style.invader}" ui:field="panel" />

然后,在浏览器中的结果 html 文件中,而不是一个注入的 css 样式中,我得到了四个定义的选择器:

.org-invader-widget-client-WidgetStyle-invader;
.org-invader-widget-client-WidgetStyle-invader .org-invader-widget-client-WidgetStyle-button;
.org-invader-widget-client-MyWidget_UIImpl_GenCss_style-invader;
.org-invader-widget-client-MyWidget_UIImpl_GenCss_style-invader .org-invader-widget-client-MyWidget_UIImpl_GenCss_style-button;

这些对重复上述样式,只是名称不同。我看到第二对以 "MyWidget owned" 样式出现,但是我如何强制所有应用程序仅使用我在 .css 文件中定义的那些 css 类 而不进行任何混淆?

此外,第二对css-类未能正确应用。只应用了第一个,第二个不匹配。

我哪里做错了?

好的,我发现使用

访问 css
<ui:style ... />

注入样式并且 css 类 可能会获得额外的前缀,对我来说正确的方法是通过带有

的 ClientBundle 访问样式
<ui:with ... >

混淆覆盖在 *.gwt.xml 中的 SuperDevMode 中不起作用 'by default' 并且,如果我是对的,它必须使用 DevMode 运行 参数进行配置。