GWT 2.7 超级开发模式不适用于 CssResource.style=obf

Posted

技术标签:

【中文标题】GWT 2.7 超级开发模式不适用于 CssResource.style=obf【英文标题】:GWT 2.7 super dev mode does not work with CssResource.style=obf 【发布时间】:2015-11-20 08:09:29 【问题描述】:

直到 GWT 2.5,默认情况下所有的 css 类都被混淆了,但是在 GWT 2.7 中,在超级开发模式下运行时,它会在类名中附加完整的包。我在下面尝试过,但它不起作用。

我没有混淆 css 样式,而是打印 com-google-gwt-user-cellview-client-CellTable-Style-cellTableCell 之类的名称。

【问题讨论】:

【参考方案1】:

这是on purpose。代码中有一条注释解释了原因:

  // Cs-s-resourceGenerator needs to produce stable, unique naming for its input.
  // Currently on default settings CssResourceGenerator's obfuscation depends on
  // whole world knowledge and thus will produce collision in obfuscated mode, since in
  // incremental compiles that information is not available.

连同 TODO 一起最终修复 Cs-s-resourceGenerator

但是,如果我可能会问,非混淆样式名称有什么问题?

【讨论】:

谢谢托马斯。我们为 celltable 和其他一些小部件添加了一些自定义 css 样式。最初 css 名称被混淆,它变成了类似 GPBYFDEPC 或 GPBYFDEPD 的东西,基于此我们添加了 css 样式,如 - tr.GPBYFDEPC td, tr.GPBYFDEPD td, border-bottom: 1px solid #d3d3d3;边框顶部:无;左边框:无;右边界:无;现在由于 css 类生成为 com-google-gwt-user-cellview-client-CellTable-Style-cellTableCell 而不是 GPBYFDEPD,所有的屏幕看起来都很丑。 使用混淆名称是在自找麻烦。有一些方法可以自定义 celltable 等的样式。利用 CssResource;那么为什么要依赖一个易碎的混淆名称呢?

以上是关于GWT 2.7 超级开发模式不适用于 CssResource.style=obf的主要内容,如果未能解决你的问题,请参考以下文章

在 GWT 2.7 中使用 SuperDevMode 时如何获取完整的 StackTrace?

GWT 2.7 + GAE 应用程序在部署时寻找代码服务器

如何启动 GWT 超级开发模式 [重复]

GWT 超级开发模式 - bindAddress - 未显示更改

Intellij 12、GWT 2.6.0-rc1 和超级开发模式

Tomcat中的超级开发模式+ JSP页面