Управление зависимостями пакетов в Java (Eclipse) - PullRequest
2 голосов
/ 31 мая 2011

У меня есть проект Java (в Eclipse), состоящий из нескольких пакетов. Я хотел бы контролировать зависимости между пакетами, чтобы, например, один пакет не мог использовать другой пакет в проекте. Причина этого заключается в том, что я собираюсь сделать автономный jar из подмножества пакетов.

Нужно ли разделять мой проект на несколько, чтобы достичь этого, или есть какой-нибудь инструмент или плагин Eclipse, который это делает?

1 Ответ

5 голосов
/ 31 мая 2011

Хорошо, поскольку 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 таким образом только на этапе разработки, не вызывая каких-либо зависимостей во время выполнения.

...