我有一个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来避免碰撞但是我没有那个在我的情况下并且真的想关闭混淆
答案 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)的所有可能值均为:
要验证gwt版本的可用值,请查看您正在使用的gwt版本的 com.google.gwt.resources.rg.CssObfuscationStyle javadoc(或源代码)。