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

我想在构建中收到一条错误消息,指出违反了(自定义)程序包依赖关系规则并且构建已中止。我还想在Ant脚本或IDE项目文件之外的列表中维护依赖项,最好是在文本文件中。

(我不知道Maven,但我在这里读到它对模块依赖管理有更好的支持)

有帮助吗?

解决方案

我相信Checkstyle有一个检查。 它被称为导入控制

其他提示

您可以配置Eclipse项目以指定访问规则。访问规则可以指定“禁止”,“不鼓励”和“可访问”,以及“可访问”。所有使用通配符规则的级别。然后,您可以将Discouraged或Forbidden的违规配置在构建期间标记为警告或错误。

关于这个想法的一篇旧文章(细节可能已经过时):

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

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

常春藤似乎是解决问题的好方法(如果您使用的是蚂蚁)。 Ivy是Ant的官方依赖管理组件,因此可以很好地与ant集成。它能够解决依赖关系,处理冲突,创建排除等等。

它使用简单的xml结构来描述依赖项,并且比Maven更容易使用,因为它只试图解决依赖项解析问题。

来自常春藤主页:

Ivy是一个管理(记录,跟踪,解决和报告)项目依赖项的工具。它的特点如下:

  1. 灵活性和可配置性 - Ivy基本上与流程无关,并且与任何方法或结构无关。相反,它提供了必要的灵活性和可配置性,以适应广泛的依赖关系管理和构建过程。
  2. 与Apache Ant的紧密集成 - 虽然作为一个独立的工具提供,但Ivy在Apache Ant上工作得特别好,提供了许多强大的Ant任务,从依赖解析到依赖报告和发布。

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

在编译和实时编辑依赖类时,将显示依赖项违规(如右侧错误栏中的错误/警告条纹)。

使用JetBrains的TeamCity构建服务器可以获得更多自动化,可以运行检查构建并报告上述配置的检查。

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

Eclipse通过Build Path属性/ jar属性支持此功能。我认为它可能只适用于jar /项目边界。

也许可以使用 Classsycle http://classycle.sourceforge.net/ddf.html

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

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

要审核问题的广泛程度,IntelliJ IDEA的一个有用的起点是分析依赖关系

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

从该文章中,您可以了解如何运行和执行项目的依赖性分析。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top