代码之家  ›  专栏  ›  技术社区  ›  Karl

限制Java包之间的依赖关系

  •  9
  • Karl  · 技术社区  · 16 年前

    在Java构建系统中对包依赖项实施限制的可能性有哪些?例如 myapp.server.bl.Customer 不应允许类引用 myapp.client.ui.customlayout 我对基于Ant或特定于IDE的解决方案感兴趣。

    我希望在生成中得到一条错误消息,指示违反了(自定义)包依赖项规则,生成被中止。我还希望在一个列表中维护依赖关系,最好是在一个文本文件中,在Ant脚本或IDE项目文件之外。

    (我不知道Maven,但我在这里读过它,它更好地支持模块依赖关系管理)

    7 回复  |  直到 12 年前
        1
  •  7
  •   davetron5000    15 年前

    我相信Checkstyle有一张支票。 它叫 Import Control

        2
  •  6
  •   Alex Miller    16 年前

    http://www.eclipsezone.com/eclipse/forums/t53736.html

    如果您使用的是Eclipse(或OSGi)插件,那么插件/模块的“公共”部分是显式定义的,这是模型的一部分。

        3
  •  3
  •   bombadil    16 年前

    ivy

    它使用一个简单的xml结构来描述依赖关系,并且比Maven更易于使用,因为它只尝试解决依赖关系解析问题。

    从常春藤主页:

    1. 灵活性和可配置性——Ivy本质上是流程不可知的,不依赖于任何方法或结构。相反,它提供了必要的灵活性和可配置性,以适应广泛的依赖关系管理和构建过程。
    2. 与ApacheAnt紧密集成—Ivy作为一个独立的工具提供,但与ApacheAnt的配合尤其出色,它提供了许多功能强大的Ant任务,从依赖项解析到依赖项报告和发布。
        4
  •  3
  •   Andrei    16 年前

    对于特定于IDE的解决方案,IntelliJ IDEA有一个依赖项分析工具,允许定义无效的依赖项。 http://www.jetbrains.com/idea/webhelp2/dependency-validation-dialog.html

    在编译和实时编辑依赖类时(在右侧错误栏中显示为错误/警告条),将显示依赖性冲突。

    JetBrains的TeamCity构建服务器可以实现更高的自动化,它可以运行检查构建并报告上述配置的检查。

    对于另一个独立于IDE的解决方案,AspectJ可用于声明无效的依赖项(并在构建过程中集成该步骤,以获取问题的警告/错误信息)。

        5
  •  1
  •   basszero    16 年前

    Eclipse通过构建路径属性/jar属性支持这一点。我认为它可能只适用于jar/项目边界。

        6
  •  1
  •   Rostislav Matl    13 年前
        7
  •  1
  •   Alain O'Dea    9 年前

    您可以在IDEA或Maven中使用多个模块,也可以在Eclipse和Gradle中使用多个项目。这一概念在所有情况下都是相同的。

    一个微不足道的解释将是一个模块 myapp.server.bl myapp.client.ui.customlayout 它们之间没有编译时依赖关系。现在,任何针对相反模块/项目编译代码或完成代码的尝试都将按预期失败。

    分析依赖关系 :

    http://www.jetbrains.com/idea/webhelp/analyzing-dependencies.html

    从这篇文章中,您可以看到如何运行项目的依赖性分析并对其采取行动。