在GWT 2.0 CssResource中,我如何关闭所有css类的混淆?

时间:2011-05-12 01:08:39

标签: gwt gwt2 cssresource clientbundle

我有一个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 个答案:

答案 0 :(得分:6)

要同时禁用所有遗留类的模糊处理,您可以利用所谓的here

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

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

答案 1 :(得分:2)

根据GWT文档,一般可以禁用总线。来自CssResource section "levers and knobs"

  

配置属性CssResource.style可以设置为pretty   这将禁用类名混淆以及漂亮的打印   CSS内容。将其与ClientBundle.enableInlining值相结合   false生成一个适合客户端的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" />

我不清楚如何覆盖此值,因为它已经设置。你能成功解决这个问题吗?

答案 2 :(得分:1)

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

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

@external top-table;
.top-table {
  some: rule;
}

答案 3 :(得分:0)

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

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

当设置为稳定时,类名将由资源接口中的限定类名和后面的方法名组成(当然所有。替换为_)

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

  • 相当
  • 调试
  • 稳定
  • 稳定shorttype
  • 稳定NoType在

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