3

我有一组 Maven 项目,我想定义访问规则。
例如,项目数据库和缓存可能只能由项目 DataLayer 访问,而不能从项目 UiLayer 访问。我说的是 maven 项目,但包级别的访问验证也可以工作,只要它很容易集成到 maven 项目中。

我看过Macker,它具有一组不错的功能,例如访问控制 b/w java 包、样式检查等,但一直很难将其与一组 maven 项目联系起来。

macker-maven-plugin,它仍在开发中,我已经能够让它为我工作,但我担心它不会很好地为我服务。
这个插件对所有项目的类运行验证。
这意味着从现在开始,我必须让 macker-rules.xml 在每个 maven 项目中定义访问规则,以确保规则不会被破坏。这看起来像是一场维护噩梦。

那么 - 我错过了使用 macker-maven-plugin 的东西吗?也许我没有正确使用它。

我没有使用 JDepend 的经验,但从简短的阅读来看,它看起来像是 macker 的精简版。有一个jDepend maven 插件,但它的功能只是生成有关使用情况和统计​​信息的报告,但我真正需要的是别的东西,一个访问检查,如果它失败,它就会失败。

有人可以为 Maven 项目的项目访问检查或包访问检查提出更好的替代方案吗?

谢谢

4

2 回答 2

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>
于 2010-01-05T11:23:25.730 回答
0

如果您将 Maven 项目拆分为子项目并正确构建 API,则可以将访问约束作为子项目依赖项的副作用来实现。

于 2010-01-05T10:15:31.783 回答