2016-03-08 54 views
2

我有一个Java程序的Gradle构建,如果在包结构中找到循环依赖关系,我想包含静态分析以导致构建失败。例如,FindBugs可以配置为执行此操作吗?我现在有在build.gradle定义FindBugs的,它会停止订做各种问题,但不包周期:Gradle:防止Java包结构中的循环依赖关系

apply plugin: 'findbugs' 

findbugs { 
    toolVersion = '3.0.1' 
    effort = 'max' 
    reportLevel = 'medium' 
} 

回答

1

我会建议JDepend这一点。它有一个标准的Gradle插件: https://docs.gradle.org/current/userguide/jdepend_plugin.html

如果存在警告(实际上,我认为这是默认设置),则可以配置JDepend插件以使构建失败。

+0

谢谢@Thomas。我尝试在包结构中添加一个明显的循环依赖项,然后将以下内容添加到Gradle配置中: 'apply plugin:'jdepend''。不幸的是,尽管JDepend明显运行,但并没有停止包循环的构建。我也尝试过'jdepend {ignoreFailures = false}'但仍然没有运气。有任何想法吗? – Adam

+0

这应该真的有用 - 你检查源集配置吗? –

+0

源集配置没问题。 JDepend在构建过程中为'main'源集合生成输出。此外,运行'./gradlew:core:tasks --all'会显示'jdependMain'是check中包含的一个验证任务。 – Adam

0

您也可以尝试jadecy: https://sourceforge.net/projects/jadecy/

当计算包周期也计算导致每个包的依赖,这是要弄清楚这是怎么回事有用的类。 它也允许计算类周期,如果你需要它。

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

+1

谢谢@Jeff,这很有趣。具体来说,我需要在Gradle构建中工作。该项目是否有Gradle插件? – Adam