gwt - para - ofuscar en programacion
En GWT 2.0 CssResource, ¿cómo puedo desactivar la ofuscación de todas mis clases de CSS? (4)
De acuerdo con la documentación de GWT, es posible deshabilitar la ubicación en general. Desde la sección "palancas y botones" de CssResource :
La propiedad de configuración CssResource.style puede configurarse en bonita, lo que deshabilitará la ofuscación del nombre de clase y también imprimirá el contenido de CSS. Combine esto con un valor ClientBundle.enableInlining de false para producir una expresión CSS que sea susceptible de edición por parte del cliente.
En mi proyecto GWT de trabajo, puedo ver que esta propiedad está configurada en Resources.gwt.xml (incluida 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 no me queda claro es cómo anular este valor, ya que ya está configurado. ¿Logramos resolver eso?
Tengo un CssResource en el que quiero que algunas de las clases CSS se "mapeen" a los métodos:
@ClassName("top-table")
String topTable();
Pero quiero desactivar la ofuscación que hace GWT (mientras se desarrolla al menos, para una mejor depuración en firebug, etc.).
¿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 ...
Algo como @external. * Resolvería mi problema pero eso no parece estar disponible al menos en gwt 2.0.x
Mi solución actual es usar:
<set-configuration-property name="CssResource.style" value="pretty"/>
Pero eso no apaga la ofuscación, solo lo hace más bonito :) Sé que se necesita obf para evitar colisiones, pero no tengo eso en mi caso y realmente me gustaría apagar la ofuscación.
Para desactivar la ofuscación para todas las clases heredadas a la vez, puede explotar lo que se dice here
En resumen, en el archivo css heredado, que está vinculando utilizando el paquete CssResource, ponga esta declaración: @external .*;
Todas las clases en el archivo que tiene este archivo de declaración no se ofuscarán.
Para no haber confundido los nombres de las clases, simplemente necesita agregar la siguiente línea a su archivo gwt.xml:
<set-configuration-property name="CssResource.style" value="stable" />
Cuando se establece en los nombres de las clases estables consistirá de un nombre de clase calificado seguido de un nombre de método en las interfaces de recursos (por supuesto, con todos reemplazados por _)
Todos los valores posibles para CssResource.style (para gwt 2.7) son:
- bonita
- depurar
- estable
- stable-shorttype
- estable-notype
Para verificar los valores disponibles para su versión de gwt, mire com.google.gwt.resources.rg.CssObfuscationStyle javadoc (o código fuente) para la versión de gwt que esté utilizando.
Puede usar la here para evitar que un nombre de clase css se ofusque.
En su caso, su archivo CSS puede contener
@external top-table;
.top-table {
some: rule;
}