Сборка Java + AspectJ с помощью Ant
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Описание ситуации:
Есть main
public static void main(String[] args) {
System.out.println("");
System.out.println("Hello, Chiz!!!");
System.out.println("");
Worker w1 = new Worker(1, "Vasya", 23, false);
w1.DoWork();
Worker w2 = new Worker(2, "Petya", 25, false);
w2.DoWork();
Boss b1 = new Boss(3, "Afonasii", 33, true);
b1.set_arrWorkers(new Worker[] { w1, w2 });
System.out.println("");
System.out.println("Goodbye, Chiz!!!");
System.out.println("");
}
Босс с работнечегом отнаследованны от простого смертного пользователя. У всех есть пустой конструктор.
Есть класс Аспекта:
public class AspectTest {
@After("execution(test.user.* .new(..))")
public void doSysOutAfterP(JoinPoint thisJoinPoint) {
System.out.println("---------------------");
System.out.println("------- After -------");
System.out.println("[" + thisJoinPoint.getTarget().getClass().toString() + "]");
System.out.println("---------------------");
}
}
Этот проект пишится мной в Eclipse. там же он собирается и прекрасно работает.
Но, как все адекватные программисты понимают, это тестовый пример. Суть этого теста — самый простой работающий аспект.
А теперь надо этот же проект собрать антом, т.к. тот проект, для которого изучается эта технология, собирается антом.
Вот тут и появилась проблема.
Описание проблемы:
Проект собирается Ant, но при выполнении приложения валит ошибку в том месте, где должен работать аспект.
Что было дальше? Дальше я переписал аспект на такую форму:
/**
*
*/
package aspects;
/**
* @author Chiz
*
*/
public aspect AspectTest2 {
pointcut greeting() : execution(String DoWork(..)) && !within(AspectTest2);
before() : greeting() {
System.out.println("... before! ...");
}
after() : greeting() {
System.out.println("... after! ...");
}
}
Это было сделано для того, чтобы убрать аспект из конструктора и поменять стиль написания аспектов (сравните первцый аспект и второй). Но это не помогло — таже ошибка в том же месте — при вызове аспекта (метод, описанный в файле аспекта).
При любом раскладе в Eclipse всё работает как часы.
В Ant скрипте прописывались classpath и в глобальных все jar для AspectJ прописывались.
Кто работал с AspectJ + Ant, поделитесь опытом, пожалуйста.
Заранее благодарен.
9 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів