如何在Maven项目中检查项目边界访问

时间:2010-01-05 09:35:08

标签: java maven-2 jdepend

我有一套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项目的包访问检查提出更好的替代方案吗?

由于

2 个答案:

答案 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,则可能将访问约束实现为子项目依赖项的副作用。

相关问题