Gradle:防止Java包结构中的循环依赖

Gradle:防止Java包结构中的循环依赖,java,gradle,findbugs,Java,Gradle,Findbugs,我有一个Java程序的Gradle构建,如果在包结构中发现循环依赖项,我希望包括静态分析,以导致构建失败。例如,FindBugs可以配置为这样做吗?我目前在build.gradle中定义了FindBugs,它会因各种问题而停止构建,但不会针对包周期: apply plugin: 'findbugs' findbugs { toolVersion = '3.0.1' effort = 'max' reportLevel = 'medium' } 我建议你这样做。它有一个

我有一个Java程序的Gradle构建,如果在包结构中发现循环依赖项,我希望包括静态分析,以导致构建失败。例如,FindBugs可以配置为这样做吗?我目前在
build.gradle
中定义了FindBugs,它会因各种问题而停止构建,但不会针对包周期:

apply plugin: 'findbugs'

findbugs {
    toolVersion = '3.0.1'
    effort = 'max'
    reportLevel = 'medium'
}
我建议你这样做。它有一个标准的Gradle插件:

如果出现警告,您可以将JDepend插件配置为使构建失败(事实上,我认为这是默认设置)。

您也可以尝试jadecy:

当它计算包周期时,它还计算导致每个包依赖性的类,这有助于了解发生了什么。 如果需要,它还允许计算类周期

与JDepend相比,它更类似于jdeps,但主要是设计的 作为库(用于依赖项相关的单元测试),即使
也可以从命令行使用它。

谢谢@Thomas。我尝试在包结构中添加一个明显的循环依赖项,然后在Gradle配置中添加了以下内容:
apply插件:“jdepend”
。不幸的是,尽管JDepend显然已经运行,但它并没有停止包周期的构建。我还尝试了
jdepend{ignoreFailures=false}
,但仍然没有成功。有什么想法吗?这应该很有效-你检查了源代码集配置了吗?源代码集配置很好。JDepend在构建期间为
main
源集生成输出。此外,运行
/gradlew:core:tasks--all
表明
jdependMain
是作为
检查的一部分包含的验证任务之一。我明白了。然后我建议把它作为一个新问题发布。对于Gradle,我有时会在上得到更好的结果。任何人仍然在寻找这个,Gradle的jdepend可能会使构建失败,下面是感谢@Jeff,这很有趣。具体来说,我需要一些东西在Gradle构建中工作。这个项目有Gradle插件吗?