2016-03-08 51 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