21

我有一个 CssResource 我想将一些 css 类“映射”到方法:

@ClassName("top-table")
String topTable();

但我想关闭 GWT 所做的混淆(至少在开发时,以便在 firebug 中进行更好的调试等)。

有没有简单的方法来实现这一目标?我知道我可以在我的css文件中使用@external,但是我必须定义我所有的css类,比如@external .c1、.c2、.c3等......

@external .* 之类的东西可以解决我的问题,但这似乎至少在 gwt 2.0.x 中不可用

我目前的解决方案是使用:

<set-configuration-property name="CssResource.style" value="pretty"/>

但这并没有关闭混淆,只是让它更漂亮:) 我知道需要 obf 来避免冲突,但在我的情况下我没有,我真的很想关闭混淆

4

4 回答 4

6

要一次禁用所有遗留类的混淆,您可以利用此处所说的内容

简而言之,在您使用 CssResource 捆绑包绑定的遗留 css 文件中,放置以下声明:@external .*;

文件中具有此声明文件的所有类都不会被混淆。

于 2013-10-15T12:15:56.840 回答
2

根据 GWT 文档,通常可以禁用 ofbuscation。从CssResource 部分“杠杆和旋钮”

配置属性 CssResource.style 可以设置为 pretty ,这将禁用类名混淆以及漂亮地打印 CSS 内容。将其与 false 的 ClientBundle.enableInlining 值相结合,以生成适用于客户端编辑的 CSS 表达式。

在我的工作 GWT 项目中,我可以看到这个属性实际上是在 Resources.gwt.xml 中设置的(包含在 gwt-user.jar 中):

  <!-- This can be used to make CssResource produce human-readable CSS -->
  <define-configuration-property name="CssResource.style" is-multi-valued="false" />
  <set-configuration-property name="CssResource.style" value="obf" />

我不清楚如何覆盖这个值,因为它已经设置好了。你设法弄清楚了吗?

于 2011-09-20T09:11:53.613 回答
1

您可以使用该@external指令来防止 css 类名被混淆。

在您的情况下,您的 css 文件可能包含

@external top-table;
.top-table {
  some: rule;
}
于 2011-05-14T02:15:29.433 回答
1

要不混淆类名,您只需在 gwt.xml 文件中添加以下行:

  <set-configuration-property name="CssResource.style" value="stable" />

当设置为稳定的类名时,将由合格的类名和资源接口中的方法名组成(当然,所有的 . 都替换为 _)

CssResource.style(对于 gwt 2.7)的所有可能值是:

  • 漂亮的
  • 调试
  • 稳定的
  • 稳定短型
  • 稳定型

要验证可用于您的 gwt 版本的值,请查看您正在使用的 gwt 版本的com.google.gwt.resources.rg.CssObfuscationStyle javadoc(或源代码)。

于 2016-03-30T04:55:44.337 回答