Question

J'utilise Proguard pour obscurcir une bibliothèque qui a plusieurs champs @Autowired. Le obfuscateur renomme les champs de classe (parce qu'ils sont à la classe privée / interne) et donc mon haricot ne parvient pas à instancier.

Pre-brouillées:

@Service
public class LicenseServiceImpl implements LicenseService {

    @Autowired(required = false)
    LicenseSessionStore licenseSessionStore;

    @Autowired(required = false)
    LicenseStore licenseStore;

...
}

Post-obscurcissement:

@Service
public class LicenseServiceImpl implements LicenseService {

  @Autowired(required=false)
  LicenseSessionStore a;

  @Autowired(required=false)
  LicenseStore b;

...
}

Maintenant, il y a probablement beaucoup de façons de rendre ces champs particuliers sont pas autowired mais ce que j'espérais trouver était un moyen de dire Proguard de ne pas obscurcir les champs internes qui sont annotés avec d'importants printemps-ismes (@Autowired, etc.).

Quelqu'un a une idée sur la façon dont je peux génériquement faire?

Grant

Était-ce utile?

La solution 2

Je ne considère pas une bonne réponse à ma question et serait encore comme une solution générique élégante, à ce problème. Ce que je suis affiche est ma solution temporaire qui m'a passé ma question dans la force la plus brutale, inélégante façon.

J'exclus explicitement ces articles de faux-fuyants en les ajoutant dans une option keepclassmembernames:

<option>-keepclassmembernames class * {com.common.license.LicenseSessionStore licenseSessionStore; com.common.license.LicenseStore licenseStore; }</option>

Ce n'est pas une solution privilégiée, car elle exige primordiale nommée dans chaque classe et deviendra un cauchemar d'entretien.

Une meilleure réponse est encore nécessaire!

Grant

Autres conseils

J'ai eu les noms de classe de retenue des problèmes similaires pour les classes annotées simplexml. Mon solution était d'ajouter ce qui suit:

-keepclassmembers class * {
    @org.simpleframework.xml.* *;
}

Je pense que quelque chose de semblable fonctionnerait pour vous:

-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.* *;
} 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top