我有一套Maven项目,我想定义访问规则 例如,项目数据库和缓存只能由项目DataLayer访问,而不能从项目UiLayer访问。我说的是maven项目,但是只要很容易集成到maven项目中,包级访问验证也可以工作。
我看过Macker,它有一套很好的功能,比如访问控制b / w java包,样式检查等,但是很难将它们绑定到一组maven项目中。
还有macker-maven-plugin,它仍在开发中,我已经能够让它为我工作,但我担心它不能很好地为我服务。
该插件对所有项目的类进行验证
这意味着我必须从现在开始在每个maven项目中定义macker-rules.xml来定义访问规则,以确保规则不被破坏。这看起来像是一场维护噩梦。
那么 - 我是否错过了使用macker-maven-plugin的东西?也许我没有正确使用它。
我没有JDepend的经验,但从简短的阅读看起来就像是macker的瘦身版本。有一个jDepend maven plugin,但它的功能仅仅是生成有关使用情况和统计数据的报告,但我真正需要的是其他内容,如果失败则会对构建失败进行访问检查。
有人可以为项目访问检查或maven项目的包访问检查提出更好的替代方案吗?
由于
答案 0 :(得分:1)
我认为您正在寻找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>
答案 1 :(得分:0)
如果将Maven项目拆分为子项目并正确构建API,则可能将访问约束实现为子项目依赖项的副作用。