Frage

Ich verwende Proguard eine Bibliothek zu verschleiern, die mehrere @Autowired Felder. Der obfuscator wird diese Klasse Felder umbenennen (weil sie private / intern in die Klasse sind) und damit meine Bohne versagt instanziiert werden.

Pre-verschleiert:

@Service
public class LicenseServiceImpl implements LicenseService {

    @Autowired(required = false)
    LicenseSessionStore licenseSessionStore;

    @Autowired(required = false)
    LicenseStore licenseStore;

...
}

Post-Verschleierung:

@Service
public class LicenseServiceImpl implements LicenseService {

  @Autowired(required=false)
  LicenseSessionStore a;

  @Autowired(required=false)
  LicenseStore b;

...
}

Nun gibt es wahrscheinlich eine Menge Möglichkeiten, diese bestimmten Felder zu machen, nicht autowired bekommen, aber was ich hatte gehofft, zu finden waren ein Weg, Proguard zu sagen, keine internen Felder zu verschleiern, die mit wichtigem Frühling-isms (@Autowired kommentiert werden, etc.).

Wer eine Idee hat, wie ich diese allgemein tun?

Grants

War es hilfreich?

Lösung 2

Ich halte dies nicht für eine richtige Antwort auf meine Frage und würde immer noch wie eine elegante, generische Lösung für dieses Problem. Was ich Posting ist meine vorübergehende Lösung, die ich bekam Vergangenheit meines Problems in der meist Brute-Force, unelegant Art und Weise.

ich ausdrücklich diese Elemente von Verschleierung ausgeschlossen, indem sie in eine keepclassmembernames Option hinzufügen:

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

Dies ist keine bevorzugte Lösung, da sie spezifisch erfordert in jeder Klasse mit dem Namen überschreiben und eine Wartung Alptraum werden.

Eine bessere Antwort steht noch aus!

Grants

Andere Tipps

Ich hatte ein ähnliches Problem Halteklassennamen für simplexml kommentierten Klassen. Meine Verlegenheit war folgendes hinzuzufügen:

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

ich glaube, etwas Ähnliches würde für Sie arbeiten:

-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.* *;
} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top