Ich habe eine Bibliothek Common.License, die ich mit Proguard verschleiern kann:
%Vor%In dieser Bibliothek ist eine Spring-Bean mit @Service versehen:
%Vor%Ich verwende diese Bibliothek in einem Webservice-Unternehmen.Lizenz, wo ich möchte, dass der LicenseService autowire:
%Vor% So Company.License ist von Common.License abhängig. Wenn ich Common.License verschleiere, wird licenseService
in BackgroundTasks
nicht automatisch übertragen. Der einzige Weg, um dies zu umgehen, war, den Lizenzservice explizit als Bean zu definieren:
Ich sollte das nicht explizit als Bean deklarieren müssen, da ich die Klasse mit @Service
bereits kommentiert habe, was ausreichen sollte, um das Autowirken von licenseService
in BackgroundTasks
Spring-magisch zu ermöglichen. Aber das tut es nicht!
Was macht Proguard speziell, damit das nicht funktioniert? Kann ich irgendetwas in der Konfiguration von Proguard tun, um es Frühlingsfreundlicher zu machen?
Gewähren Sie
Ein großes Dankeschön an Eric Lafortune, dass er mir dabei geholfen hat, mich in die richtige Richtung zu lenken:
Hier ist die Arbeit pom-Datei, die das Plug-In und die erforderlichen Optionen angibt:
%Vor%HINWEIS! Sie müssen ProGuard 4.4 verwenden, die neueste Version von ProGuard-Maven-Plugin (2.0.4) verwendet 4.3, daher müssen Sie folgendes bearbeiten:
%Vor%Um die 4.4-Abhängigkeit (wie folgt) zu haben:
%Vor%Hier ist ein anderer Weg, um zu Version 4.4 von Proguard zu wechseln (was wahrscheinlich ein bisschen besser ist):
%Vor%Tags und Links spring proguard obfuscation autowired