Вопрос

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

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

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

Это было полезно?

Решение

Я полагаю, что у Checkstyle есть проверка для этого.Это называется Контроль импорта

Другие советы

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

Что-то вроде старой статьи об идее (подробности могут устареть):

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

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

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

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

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

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

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

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

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

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

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

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

Может быть Классный Велосипед может быть использован:http://classycle.sourceforge.net/ddf.html

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top