Ich entwickle eine Anwendung in einer DDD-Architektur mit Spring LoadTimeWeaving-Funktion. Das Problem ist, dass ich meine Junit-Tests mit Eclipse ausführen kann, aber nicht mit Maven. Ich habe alle Optionen auf verschiedenen Seiten versucht, aber es funktioniert einfach nicht. Ich bekomme die folgende Ausnahme:
verursacht von: org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen von Bean mit dem Namen 'loadTimeWeaver': Initialisierung von Bean fehlgeschlagen; Die verschachtelte Ausnahme ist java.lang.IllegalStateException: ClassLoader [sun.misc.Launcher $ AppClassLoader] bietet KEINE 'addTransformer (ClassFileTransformer)' Methode. Geben Sie einen benutzerdefinierten LoadTimeWeaver an oder starten Sie Ihre Java Virtual Machine mit dem Spring-Agenten: -javaagent: org.springframework.instrument.jar
Ich habe das Instrument-Jar als Teil von argLine zum todsicheren Plugin hinzugefügt. Im Folgenden sind meine Code-Artefakte. Bitte lassen Sie mich wissen, wo ich falsch liege oder ob es eine andere Lösung gibt.
Ich benutze Eclipse Indigo für Entwicklung, Maven 3.0 auf Mac OSX
pom.xml (nur für wichtige Details verkürzt)
%Vor%
springContext.xml (Es hat das folgende Tag zum Aktivieren der LTW-Funktion)
%Vor% Sie müssen einen spring-instrument.jar
-Agent wie folgt einfügen:
(Ersetzen Sie $ {spring.framework.version} und $ {settings.localRepository} durch Ihre Werte)
und natürlich ein AspecJ Maven Plugin als:
%Vor% Damit AspectJ funktioniert, müssen Sie auch eine aspectjrt
-Abbindung hinzufügen:
Hier ein vollständiges Beispiel, wie man AspectJ-Tests mit Maven ausführen kann
Tags und Links spring junit4 maven-surefire-plugin load-time-weaving