Это должно быть просто.
Вопрос
Как вы получаете pointcut в одном проекте, чтобы посоветовать код / классы в другом проекте?
Контекст Я работаю в затмении с двумя проектами.Для простоты объяснения давайте назовем один
научный проект , а другой
математический проект и скажем, что научный проект опирается на математический проект иЯ работаю над обоими проектами одновременно.Математический проект является базовым продуктом, и его работа будет проще, если я не сильно изменю код.
В настоящее время я отлаживаю взаимодействие между этими двумя проектами.Чтобы помочь с этим, я пишу Аспект (в рамках научного проекта) для регистрации ключевой информации при выполнении математического кода (и научного кода).
Пример Я запускаю простой пример аспекта:
package org.science.example;
public aspect ScientificLog {
public pointcut testCut() : execution (public * *.*(..));
before() : testCut() {
//do stuff
}
}
Задача Проблема в том, что независимо от того, какой pointcut я создаю, он только советует код из
научный проект .Классы из
org.math.example
не являются перекрестными, ВСЕ!
Я попытался добавить
математический проект в
inpath научного проекта .перейдя к
proect properties > AspectJ Build > Inpath
и нажав
добавить проект и выбрав
математический проект .Это не сработало, но, похоже, мне нужно что-то сделать в этом направлении.
Заранее спасибо за любые предложения ...
-gMale
РЕДАКТИРОВАТЬ 1:
С тех пор, как я написал это, я заметил, что проект выдает следующую ошибку:
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
Так что, возможно, все настроено правильно, и ошибка более тонкая.Кстати, упомянутый класс от «научного проекта», так сказать.Это происходит даже после того, как я уберу проект.Я в настоящее время гуглю эту ошибку ...
РЕДАКТИРОВАТЬ 2:
Я нашел решение ошибки выше в
комментарий № 5 здесь Проблема в том,pom-файл aspectj-plugin объявляет зависимость от aspectjtools версии 1.6.7.Таким образом, при настройке плагина эта временная зависимость должна быть изменена.Ниже приведен фрагмент кода для файла pom, который устраняет проблему, указав версию 1.6.9 вместо 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>