Как проверить доступ границ проекта в проектах Maven
У меня есть набор проектов Maven, и я хотел бы определить правила доступа.
Например, проекты Database и Cache могут быть доступны только для проекта DataLayer, но не для проекта UiLayer. Я говорю о проектах maven, но проверка доступа на уровне пакетов также может сработать, если их легко интегрировать в проекты maven.
Я посмотрел на Macker, у которого есть хороший набор функций, таких как контроль доступа ч / б java-пакетов, проверка стиля и т. Д., Но мне было трудно связать его с набором проектов maven.
Есть плагин macker-maven-plugin, который все еще находится в стадии разработки, и я смог заставить его работать на меня, но я боюсь, что он не будет служить мне хорошо.
Этот плагин выполняет проверки всех классов проекта.
Это означает, что теперь мне нужно иметь macker-rules.xml, определяющий правила доступа в каждом проекте maven, чтобы убедиться, что правила не нарушены. Это похоже на кошмар обслуживания.
Итак - я что-то упустил с использованием macker-maven-plugin? Возможно, я не правильно его использую.
У меня нет опыта работы с JDepend, но из краткого прочтения он выглядит как тонкая версия macker. Есть плагин jDepend maven, но его функциональность - это просто генерация отчетов об использовании и статистике, но что мне действительно нужно, так это что-то еще, проверка доступа, которая завершается неудачно при сборке.
Может ли кто-нибудь предложить лучшую альтернативу для проверки доступа к проекту или проверки доступа к пакету для maven проектов?
Спасибо
2 ответа
Я думаю, что вы ищете запрещенные зависимости от maven-forcer-plugin.
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes>
<exclude>org.apache.maven</exclude>
<exclude>org.apache.maven:badArtifact</exclude>
<exclude>*:badArtifact</exclude>
</excludes>
<includes>
<!--only 1.0 of badArtifact is allowed-->
<include>org.apache.maven:badArtifact:1.0</include>
</includes>
</bannedDependencies>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Если вы разделите свой проект Maven на подпроекты и правильно структурируете API-интерфейсы, возможно, вы сможете реализовать ограничения доступа как побочный эффект зависимостей подпроекта.