Dies sollte einfach sein.AspectJ: So erhalten Sie Pointcuts zu beraten Klassen in anderen Projekten
Frage
Wie bekommt man ein pointcut in einem Projekt des Code/Klassen in einem anderen Projekt zu beraten?
Kontext
Ich arbeite in Eclipse mit zwei Projekten. Zur Erleichterung der Erklärung, lassen Sie sich und das andere Mathe Projekt und sagt, dass das Wissenschaftsprojekt stützt sich auf dem Mathematik-Projekt ein wissenschaftliches Projekt nennen, und ich bin in beiden Projekten zu entwickeln, gleichzeitig. Das Mathe-Projekt ist ein Kernprodukt in der Produktion, und das Leben wird einfacher, wenn ich den Code nicht viel modifiziere.
Momentan debugge ich die Interaktion zwischen diesen beiden Projekten. Um dies zu unterstützen, schreibe ich einen Aspect (innerhalb des Wissenschaftsprojekts), um wichtige Informationen zu protokollieren, während der Mathekode (und der Wissenschaftscode) ausgeführt werden.
Beispiel
ich entlang der Linien von einem einfachen Beispiel Aspekt ausgeführt wird:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
Problem
Das Problem ist, egal welche pointcut ich schaffen, es berät nur Code aus dem Wissenschaftsprojekt. Keine Klassen von
org.math.example
sind crosscut, AT ALL! Ich versuchte, das Mathe Projekt zum INPATH des Projekts Wissenschaft Hinzufügen von-
proect properties > AspectJ Build > Inpath
und klicken add Projekt und die Wahl der Mathe-Projekt gehen. Das hat nicht funktioniert, aber es scheint, als müsste ich etwas in dieser Richtung tun. Dank im Voraus für irgendwelche Vorschläge ...
-gMale
EDIT 1:
Da dieses Schreiben habe ich das Projekt gibt die folgenden Fehler bemerkt:
Caused by: org.aspectj.weaver.BCException: Unable to continue, this version of AspectJ supports classes built with weaver version 6.0 but the class com.our.project.adapter.GenericMessagingAdapter is version 7.0 when batch building BuildConfig[null] #Files=52 AopXmls=#0
Also vielleicht ist dies richtig eingerichtet und der Fehler ist subtiler. Übrigens stammt die genannte Klasse sozusagen aus dem "Science Project". Dies passiert auch, nachdem ich das Projekt gereinigt habe. Ich bin derzeit diesen Fehler googeln ...
EDIT 2:
fand ich die Lösung der oben genannten Fehler in comment #5 here
Das Problem ist die Maven-aspectj-Plugins pom-Datei eine Abhängigkeit von aspectjtools Version erklärt 1.6 .7. Bei der Konfiguration des Plugins muss diese Übergangsabhängigkeit modifiziert werden. Hier ist das zugehörige Code-Snippet für die Pom-Datei, das das Problem behebt, indem Version 1.6.9 statt 1.6 angegeben wird.7:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.9</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
Danke, Sie sind genau richtig. Ich habe gerade die Ausnahme gelöst und dementsprechend meine Frage aktualisiert. Leider wurde ich im Interesse der Zeit angewiesen, das "Matheprojekt" direkt in das "Wissenschaftsprojekt" zu übernehmen. Natürlich vermeidet dies das Problem, aber ich bin nicht in der Lage, die Auswirkungen der Korrektur des zweiten Fehlers zu bestimmen, da die Codebasis jetzt komplett anders ist und das Zurückverfolgen in Subversion zu lange dauern würde. Danke für Ihre Hilfe. Da du die einzige Antwort bist, stimme ich alle deine Nachrichten ab und belohne dich mit der Antwort. Vielen Dank! – gMale