Это должно быть просто.
Вопрос
Как получить pointcut в одном проекте, чтобы советовать коду / классам в другом проекте?
Я работаю в eclipse над двумя проектами. Для простоты объяснения назовем один научный проект , а другой математический проект и скажем, что научный проект основан на математическом проекте, и я работаю над обоими проектами одновременно. Математический проект является основным продуктом в производстве, и жизнь станет проще, если я не буду сильно изменять код.
В настоящее время я отлаживаю взаимодействие между этими двумя проектами. Чтобы помочь в этом, я пишу аспект (в рамках научного проекта) для регистрации ключевой информации по мере выполнения математического кода (и научного кода).
Я выполняю простой примерный аспект в следующих строках:
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
Так что, возможно, это правильно настроено и ошибка более тонкая. Кстати, упомянутый класс, так сказать, из "научного проекта". Это происходит даже после того, как я очищаю проект. Я сейчас ищу эту ошибку в Google ...
РЕДАКТИРОВАТЬ 2:
Я нашел решение указанной выше ошибки в
комментарий №5 здесь
Проблема в том, что pom-файл maven-aspectj-plugin объявляет зависимость от aspectjtools версии 1.6.7. Итак, при настройке плагина эту временную зависимость необходимо изменить. Вот фрагмент кода для файла pom, который устраняет проблему, указав версию 1.6.9 вместо 1.6.7:
org.codehaus.mojo
aspectj-maven-plugin
1.3
org.aspectj
aspectjtools
1.6.9
1.6
compile
test-compile