Esto debería ser simple.AspectJ: Cómo obtener puntos para asesorar a las clases ubicadas en otros proyectos
Pregunta
¿Cómo se obtiene un punto de corte en un proyecto para asesorar al código/clases dentro de otro proyecto?
Contexto
Estoy trabajando en eclipse con dos proyectos. Para facilitar la explicación, vamos a llamar a uno proyecto de ciencias y el otro proyecto de matemáticas y dicen que el proyecto de la ciencia se basa en el proyecto de matemáticas y estoy desarrollando en ambos proyectos, al mismo tiempo. El proyecto de matemáticas es un producto central, en producción, y la vida será más fácil si no modifico mucho el código.
Actualmente, estoy depurando la interacción entre estos dos proyectos. Para ayudar con eso, estoy escribiendo un Aspecto (dentro del proyecto de ciencias) para registrar información clave a medida que se ejecuta el código de matemáticas (y el código de ciencias).
Ejemplo
I funcionamiento de un aspecto simple ejemplo a lo largo de las líneas de:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
Problema
El problema es, no importa qué punto de corte se crea, sólo se aconseja código del proyecto de ciencia . Ninguna clase de
org.math.example
tiene corte transversal, ¡EN ABSOLUTO!
He intentado añadir el proyecto matemáticas a la INPATH del proyecto ciencia yendo a
proect properties > AspectJ Build > Inpath
y haciendo clic
proyecto de complemento y elegir el proyecto
matemáticas. Eso no funcionó, pero parece que tengo que hacer algo en ese sentido.
Gracias, por adelantado, para cualquier sugerencia ...
-gMale
EDIT 1:
Después de haber escrito esto, me he dado cuenta de que el proyecto está dando el siguiente error:
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
Así que quizás esto esté configurado correctamente y el error sea más sutil. Por cierto, la clase mencionada es del "proyecto de ciencia", por así decirlo. Esto sucede incluso después de limpiar el proyecto. Actualmente estoy buscando en Google este error ...
EDIT 2:
he encontrado la solución para el error anterior en comment #5 here
El problema es el archivo POM de Maven-aspectj-plugin declara una dependencia de la versión 1.6 aspectjtools .7. Entonces, al configurar el plugin, esa dependencia transitoria tiene que ser modificada. Aquí está el fragmento de código relacionado para el archivo pom que soluciona el problema especificando la versión 1.6.9 en lugar de 1.6.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>
Gracias, tienes razón. Acabo de resolver la excepción y actualicé mi pregunta anterior, en consecuencia. Desafortunadamente, por el bien del tiempo, esencialmente me han ordenado que inserte el "proyecto matemático" directamente en el "proyecto científico". Claramente, esto evita el problema, pero no puedo determinar el impacto de corregir el segundo error porque la base del código es completamente diferente ahora y retroceder en la subversión tomaría demasiado tiempo. Gracias por tu ayuda. Como usted es la única respuesta, votaré todos sus mensajes y le recompensaré la respuesta. ¡Gracias! – gMale