Search code examples
gwtgwt2cssresourceclientbundle

In GWT 2.0 CssResource, how I can turn off obfuscation for all my css classes?


I have a CssResource where I want to have some of the css classes "mapped" to methods:

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

But I want to turn off the obfuscation GWT does (while developing at least, for better debugging in firebug, etc).

Is there an easy way to achieve this? I know I can use @external in my css file but then I have to define all my css classes like @external .c1, .c2, .c3, etc...

Something like @external .* would solve my problem but that doesn't seem to be available at least in gwt 2.0.x

My current solution is to use:

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

But that doesn't turn off the obfuscation, just makes it prettier :) I know obf is needed to avoid collisions but I don't have that in my case and would really like to turn off obfuscation


Solution

  • According to the GWT documentation it is possible to disable ofbuscation in general. From CssResource section "levers and knobs":

    The configuration property CssResource.style may be set to pretty which will disable class-name obfuscation as well as pretty-print the CSS content. Combine this with a ClientBundle.enableInlining value of false to produce a CSS expression which is amenable to client-side editing.

    In my work GWT project, I can see this property is actually set in Resources.gwt.xml (included in 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" />
    

    What is unclear to me is how to override this value, since it is already set. Did you manage to figure that out?