No GWT 2.0 CssResource, como posso desativar a ofuscação para todas as minhas classes CSS?

StackOverflow https://stackoverflow.com/questions/5972296

Pergunta

Eu tenho um CssResource onde quero que algumas das classes CSS sejam "mapeadas" para métodos:

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

Mas eu quero desligar a ofuscação que o GWT faz (durante o desenvolvimento, pelo menos, para melhor depuração no firebug, etc).

Existe uma maneira fácil de conseguir isso?Eu sei que posso usar @external no meu arquivo css, mas tenho que definir todas as minhas classes css como @external .c1, .c2, .c3, etc...

Algo como @external .* resolveria meu problema, mas não parece estar disponível pelo menos no gwt 2.0.x

Minha solução atual é usar:

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

Mas isso não desativa a ofuscação, apenas a deixa mais bonita :) Eu sei que o obf é necessário para evitar colisões, mas não tenho isso no meu caso e gostaria muito de desativar a ofuscação

Foi útil?

Solução

De acordo com a documentação do GWT é possível desabilitar o ofbuscation em geral.De Seção CssResource "alavancas e botões":

A propriedade de configuração cssResource.style pode ser definida como bonita, o que desativará a ofuscação de nome de classe, bem como a prensa bonita do conteúdo CSS.Combine isso com um valor de Falso para produzir uma expressão CSS que seja passível de edição do lado do cliente.

No meu projeto GWT de trabalho, posso ver que esta propriedade está realmente definida em Resources.gwt.xml (incluído em 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" />

O que não está claro para mim é como substituir esse valor, uma vez que já está definido.Você conseguiu descobrir isso?

Outras dicas

Para desabilitar a ofuscação para todas as classes legadas de uma vez, você pode explorar o que é dito aqui

Resumindo, no arquivo css legado, que você está vinculando usando o pacote CssResource, coloque esta declaração: @external .*;

Todas as classes no arquivo que contém este arquivo de declaração não serão ofuscadas.

Você pode usar o @external diretiva para evitar que um nome de classe CSS seja ofuscado.

No seu caso, seu arquivo css pode conter

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

Para não ofuscar os nomes das classes, basta adicionar a seguinte linha ao seu arquivo gwt.xml:

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

Quando definidos como estáveis, os nomes de classe consistirão em um nome de classe qualificado seguido pelo nome do método em suas interfaces de recursos (é claro, com todos os arquivos .substituído por _)

Todos os valores possíveis para CssResource.style (para gwt 2.7) são:

  • bonito
  • depurar
  • estábulo
  • tipo curto estável
  • tipo estável

Para verificar os valores disponíveis para sua versão gwt, consulte com.google.gwt.resources.rg.CssObfuscationStyle javadoc (ou código-fonte) para a versão GWT que você está usando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top