Java 中的体系结构约束 [已关闭]

2022-09-04 20:55:26

我想确保我的项目不包含包之间不必要的依赖项。例如,我想确保项目具有分层结构。即模型低于一切,业务逻辑依赖于模型,视图依赖于业务逻辑和模型。每个图层都放置在其自己的包中。

您能推荐任何最好是开源工具吗?这些工具允许我指定这些约束并将其作为持续集成的一部分进行检查?

附言:我知道我可以在单独的maven模块中分离项目。不幸的是,我的真实情况比3层系统更复杂。如果我使用 maven 模块,我会有几十个非常小的模块。


答案 1

虽然我不确定是否有可能在层依赖关系违规时强制执行构建失败,但至少有一个工具可以检查和可视化这些层:Sonar。你可以将它与你的 maven 和 jenkins 构建版本以及 eclipse(也许还有其他 IDE)集成。

Sonar具有依赖矩阵视图,可可视化软件包的相互依赖性。

编辑:似乎可以配置声纳以强制构建失败,由违规触发:构建破坏器插件


答案 2

这是一个非常有效的问题,因为许多项目通过Maven模块强制执行依赖关系,这是对生产力和灵活性的巨大浪费。

在花了很多时间研究这个主题之后,我可以推荐两个工具:

这两种工具在过去几年中都没有太大的发展,但运行良好。Macker具有基于XML的语法,但Classycle具有整洁的DSL。Classycle是更高级的专用工具,具有层的概念。这些工具允许您在包和某些类类型之间强制实施严格的屏障。应在生成过程中将此工具配置为在任何约束下立即失败。

查看此处 (http://innig.net/macker/example/layering/src/macker.xml) 和此处 (http://classycle.sourceforge.net/ddf.html#layer) 的分层示例。

对于一个好的开源工具来说,仍然有一个利基市场,它会挂接到编译器中,并在你在IDE而不是构建工具中时给你错误。Structure101功能丰富得多,但也很重,并且依赖于Eclipse插件。

更新

这些也是JQAssistant,它非常强大,但可能需要相当长的时间来学习和设置。


推荐