2011-05-12 13 views
21

Tengo un CssResource donde yo quiero tener algunas de las clases CSS "mapeados" a métodos:En GWT 2.0 CssResource, ¿cómo puedo desactivar la ofuscación para todas mis clases de CSS?

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

Pero quiero apagar la ofuscación GWT hace (mientras se desarrolla al menos, para una mejor depuración en Firebug , etc.)

¿Hay una manera fácil de lograr esto? Sé que puedo usar @external en mi archivo css pero luego tengo que definir todas mis clases CSS como @external .c1, .c2, .c3, etc ...

Algo como @external. * Resolvería mi problema, pero que no parecen estar disponibles al menos en GWT 2.0.x

Mi solución actual es utilizar:

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

pero eso no se apaga la ofuscación, sólo hace que sea más bonita:) Sé que se necesita obf para evitar colisiones, pero no tengo eso en mi caso y realmente me gustaría apagar la ofuscación

+0

¿Dónde colocaste exactamente esa línea ''? –

+0

Esto se debe volver a abrir ya que el enlace q & a se creó después de mi pregunta inicial y mi pregunta contiene más y mejores respuestas ... No tiene sentido cerrar la pregunta anterior como duplicada .... – AlfaTeK

Respuesta

2

De acuerdo con la documentación GWT es posible desactivar ofbuscation en general. De CssResource section "levers and knobs":

El CssResource.style propiedad de configuración se puede establecer en bastante que desactivar nombre de clase de ofuscación, así como agradable para la impresión del contenido CSS. Combine esto con un valor ClientBundle.enableInlining de false para producir una expresión CSS que sea susceptible de edición en el lado del cliente .

En mi proyecto GWT trabajo, puedo ver esta propiedad se encuentra en realidad Resources.gwt.xml (incluido en 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" /> 

Lo que está claro para mí es cómo para anular este valor, ya que ya está configurado. ¿Logramos resolver eso?

1

Puede usar el @external directive para evitar que un nombre de clase css se ofusque.

En su caso, el archivo CSS puede contener

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

"¿Hay alguna manera fácil de lograr esto? Sé que puedo usar @external en mi archivo CSS, pero luego tengo que definir todas mis clases CSS como @external .c1, .c2, .c3, etc ... "Hacer eso para todas las clases es demasiado tiempo- consumiendo :( – AlfaTeK

6

Para desactivar la ofuscación para todos ustedes clases de legado a la vez, se puede explotar lo que se dice here

En resumen, en el archivo heredado css, que va a enlazar mediante haz CssResource, ponga esta declaración: @external .*;

No se ofuscarán todas las clases del archivo que tienen este archivo de declaración.

0

Para no han ofuscado nombres de las clases sólo hay que añadir siguiente línea a su archivo gwt.xml:

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

Cuando se establece en los nombres de clases estables consistirá en nombre de clase completo seguido del nombre del método en su recurso interfaces (por supuesto con todo.reemplazado por _)

todos los valores posibles para CssResource.style (por gwt 2.7) son:

  • bastante
  • depuración
  • estable
  • estable-shorttype
  • estable-notype

Para verificar los valores disponibles para su versión gwt, busque un t com.google.gwt.resources.rg.CssObfuscationStyle javadoc (o código fuente) para la versión de gwt que está utilizando.

Cuestiones relacionadas