如何在Maven项目中检查项目边界访问
问题描述:
我有一组Maven项目,我想定义访问规则。
例如,项目数据库和缓存只能由项目DataLayer访问,但不能从项目UiLayer访问。我使用Maven项目来讲话,但只要易于集成到Maven项目中,包级访问验证也可以工作。如何在Maven项目中检查项目边界访问
我已经看过Macker,它有一套很好的功能,比如访问控制黑白java包,样式检查等,但一直很难将它们绑定到一组maven项目中。
有macker-maven-plugin,这还在开发中,我已经能够为我工作,但恐怕这不会为我服务。
该插件在所有项目的类上运行验证。
这意味着我必须从现在开始在每个maven项目中都有macker-rules.xml定义访问规则,以确保规则不被破坏。这看起来像是一场维护噩梦。
所以 - 我错过了使用macker-maven-plugin的东西吗?也许我没有正确使用它。
我对JDepend没有经验,但是从短暂的阅读看来,它看起来像是瘦客户端的版本。有一个jDepend maven plugin,但它的功能仅仅是生成有关使用情况和统计信息的报告,但我真正需要的是其他内容,即访问检查,如果失败,它将失败构建。
有人可以建议一个更好的替代项目访问检查或包访问检查Maven项目?
感谢
答
我认为你正在寻找从maven-enforcer-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的权利,有可能实现您的访问限制为子项目依赖的副作用。
+1很高兴认识Macker。 – cetnar 2010-01-05 11:31:28