Дана программная система, написанная на Java, состоящая из трех уровней: A -> B -> C, т.е. уровень A использует уровень B, а уровень B использует уровень C.
Я хочу убедиться, что класс одного уровня имеет доступ только к классам того же уровня или его прямой зависимости, т. е. B должен иметь доступ к C, но не к A. Также A должен иметь доступ к B, но не к C.
Есть ли простой способ обеспечить соблюдение такого ограничения? В идеале я хочу, чтобы eclipse сразу же жаловался, если кто-то пытается получить доступ к классу неправильного уровня.
В настоящее время программное обеспечение использует maven. Поэтому я попытался поместить A, B и C в разные модули maven и правильно объявить зависимости. Это прекрасно работает, чтобы запретить B доступ к A, но не мешает A получить доступ к C.
Далее я попытался исключить C из зависимости от B. Теперь это также предотвращает доступ от A до C. Однако теперь я больше не могу использовать зависимости копирования для сбора всех транзитивных зависимостей, необходимых для времени выполнения.
Есть ли хороший способ, позволяющий мне не только чистое разделение слоев, но и возможность собрать все необходимые зависимости времени выполнения?
Подробнее здесь: https://stackoverflow.com/questions/279 ... re-in-java