AspectJ: Как получить pointcut для указания классов, расположенных в других проектах

Это должно быть просто.

Вопрос
Как получить 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
                                    1.6
                            
                            
                                    
                                            
                                                    compile
                                                    test-compile
                                            
                                    
                            
                    

6
задан tkruse 30 January 2018 в 05:27
поделиться