Хорошо, поскольку Aspectj теперь является проектом Eclipse, я думаю, что решение Aspectj также подходит. AspectJ отлично подходит для реализации таких политик, потому что он позволяет создавать предупреждения и ошибки во время компиляции на основе pointcut. И если вы используете AspectJ Developer Tools , вы получите и запустите аспекты в Eclipse.
Вот пример аспекта применения политики:
public aspect PolicyEnforcement {
pointcut project1Call() : call(* com.project1..*.*(..));
pointcut inProject1() : within(com.project1..*);
pointcut project2Call() : call(* com.project2..*.*(..));
pointcut inProject2() : within(com.project2..*);
declare error : project1Call() && inProject2()
: "Project2 is not allowed to access Project1";
declare error : project2Call() && inProject1()
: "Project1 is not allowed to access Project2";
}
Примечание. Совершенно нормально использовать AspectJ таким образом только на этапе разработки, не вызывая каких-либо зависимостей во время выполнения.