2008-09-29 5 views
8

Каковы возможности принудительного ограничения ограничений пакетов в системе сборки Java? Например, класс myapp.server.bl.Customer не должен иметь права ссылаться на пакет myapp.client.ui.customlayout. Меня интересуют решения на основе Ant или IDE.Ограничения зависимостей между пакетами Java

Я хотел бы получить сообщение об ошибке в сборке, в котором указано, что было нарушено правило пользователя (пользовательское), и сборка была прервана. Я также хотел бы поддерживать зависимости в списке, предпочтительно в текстовом файле, вне сценариев Ant или файлов проекта IDE.

(я не знаю, Maven, но я прочитал его здесь он имеет лучшую поддержку для управления зависимостями модуля)

ответ

1

Eclipse поддерживает это через свойства Path Path/свойства jar. Я думаю, что это может работать только через границы jar/project.

6

Вы можете настроить проекты Eclipse для указания правил доступа. Правила доступа могут указывать «Запрещенные», «Отклоненные» и «Доступные» уровни для всех с помощью подстановочных правил. Затем вы можете настроить нарушения запрещенных или запрещенных, которые будут помечены как предупреждения или ошибки во время сборки.

Вид старой статье на идее (детали могут быть устаревшими):

http://www.eclipsezone.com/eclipse/forums/t53736.html

Если вы используете Eclipse (или OSGi) плагины, то «общественные» части плагин/модуль явно определены, и это часть модели.

3

ivy кажется хорошим решением проблемы (если вы используете муравей). Ivy является официальным компонентом управления зависимостями Ant и, таким образом, прекрасно сочетается с муравьями. Он способен решать зависимости, обрабатывать конфликты, создавать исключения и т. Д.

Он использует простую структуру xml для описания зависимостей и проще в использовании, чем Maven, поскольку он пытается только устранить проблемы с разрешением зависимостей.

С домашней страницы Ivy:

Плющ является инструментом для управления (запись, отслеживание, разрешение и отчетности) зависимостей проекта. Он характеризуется следующим:

  1. гибкость и конфигурируемость. Плющ по существу является агностическим процессом и не привязан к какой-либо методологии или структуре. Вместо этого он обеспечивает необходимую гибкость и настраиваемость для адаптации к широкому спектру процессов управления зависимостями и построения.
  2. Тесная интеграция с Apache Ant, доступная как автономный инструмент, Ivy особенно хорошо работает с Apache Ant, предоставляя множество мощных задач Ant, начиная от разрешения зависимостей и заканчивая отчетами о зависимости и публикацией.
3

Для конкретных решений IDE IntelliJ IDEA имеет инструмент анализа зависимостей, который также позволяет определять недопустимые зависимости. http://www.jetbrains.com/idea/webhelp2/dependency-validation-dialog.html

Нарушение зависимости будет показано как при компиляции, так и вживую при редактировании зависимого класса (в виде полосы ошибок/предупреждений в правой панели ошибок).

Еще больше автоматизации можно получить на сервере сборки JetCrains TeamCity, который может запускать контрольные сборки и сообщать о выполненных выше проверках.

Для другого независимого от IDE решения AspectJ можно использовать для объявления недопустимых зависимостей (и интегрировать шаг в процессе сборки, чтобы получить информацию о предупреждениях/ошибках для проблем).

0

Вы можете использовать несколько модулей в IDEA или Maven или несколько проектов в Eclipse и Gradle. Во всех случаях концепция одинакова.

Тривиальное толкование было бы модуль для myapp.server.bl и другого для myapp.client.ui.customlayout без каких-либо временных зависимостей компиляции между любым из них. Теперь любая попытка скомпилировать код или код с противоположным модулем/проектом не удастся.

Для проверки, насколько обширна проблема уже есть, является полезной отправной точкой для IntelliJ IDEA является Анализ зависимости:

http://www.jetbrains.com/idea/webhelp/analyzing-dependencies.html

Из этой статьи вы можете увидеть, как управлять и действовать на анализе зависимостей для ваш проект.

Смежные вопросы