Java 8 的循环依赖分析 - 用于自动构建

Posted

技术标签:

【中文标题】Java 8 的循环依赖分析 - 用于自动构建【英文标题】:Cyclic dependency analysis for Java 8 - for use in an automated build 【发布时间】:2015-07-27 11:06:32 【问题描述】:

我将处理一个项目,该项目使用 JDepend 自动生成循环包依赖关系报告,作为我们 CI 构建的一部分。 (我主要对包级别的依赖关系感兴趣,所以我一直在使用 XSLT 的精简版本来获得更集中的报告——不过,它是普通的 JDepend。)

但是,我们即将将该项目迁移到 Java 8,我发现 JDepend 不适用于使用 JDK 1.8 编译器编译的代码。 JDepend 似乎不再被积极更新。

我正在尝试寻找替代品:

适用于 JDK 1.8 编译的类和/或 jar。 报告包和/或 jar 级别的循环依赖关系。 可以从 Ant 自动化(命令行可执行文件就可以了)。 生成可以从项目主页链接并在浏览器中打开的报告(例如 html 或纯文本输出 - 不是桌面应用程序)。 还(最好)生成 - 或者可以配置/调整以生成 - 仅针对循环依赖项的集中报告(如果您修改 XSLT,JDepend 可以)。

【问题讨论】:

好的,所以...我完全错过了这个事实 - docs.oracle.com/javase/8/docs/technotes/tools/windows/… - 存在于 JDK 1.8 工具集中。 (现在就试试吧。) 会喜欢一个也可能导致构建失败的 maven 工具... 是的,如果包和/或 jar 之间也存在任何循环依赖关系,我喜欢一个简单的工具来失败构建(或者可能是单元测试)。 您也许可以编写一个单元测试,将 jdeps.exe 的当前输出与代表可接受依赖关系的某个早期版本进行比较。如果依赖项发生更改,测试将失败 - 此时您可以修复依赖项或更新测试以反映新的依赖项仍然可以接受。 (有点骇人听闻,但是...) 【参考方案1】:

Java 8 在/bin 中包含jdeps.exe。虽然这并没有显式地调用循环依赖项,但它确实显示了项目包的所有依赖项。已经足够了。

【讨论】:

以上是关于Java 8 的循环依赖分析 - 用于自动构建的主要内容,如果未能解决你的问题,请参考以下文章

graphql-java 循环类型依赖

Eclipse SWT 中用于循环组合的 Java 侦听器

彻底理解Spring如何解决循环依赖

深谈Spring如何解决Bean的循环依赖

添加的服务引用的自动生成代码中的循环基类依赖错误

Spring源码-循环依赖,Java架构师必学