[英]fail gradle build if transitive dependency is used directly?
如果我的代碼直接使用(因此導入)可傳遞依賴項,我正在尋找一種使我的 gradle 構建失敗的方法。
我的意思是,如果我的項目對模塊 A 有(編譯)依賴,而模塊 A 依賴於 B(所以 B 在我的傳遞依賴項中並且在我的運行時類路徑中可用)並且我的代碼直接從 B 導入和使用類,我希望我的構建失敗。
這是一個 Maven 插件,可以滿足我的要求 - https://github.com/Scout24/illegal-transitive-dependency-check - 但我找不到 gradle 插件?
我認為下面的 2 個插件可能是您正在尋找的。
https://github.com/wfhartford/gradle-dependency-analyze
從自述文件:
這個插件試圖復制 maven 依賴插件的分析目標的功能,如果依賴被聲明但未使用或使用但未聲明,則構建失敗。
https://github.com/nebula-plugins/gradle-lint-plugin
在未使用的依賴規則維基頁面上:
- 將代碼直接使用的傳遞依賴項提升為顯式一階依賴項
我不得不說我自己都沒有使用過任何一種,但它們似乎解決了您的擔憂。
我認為您想使用java 庫插件和 api/implementation 配置。
對於傳統的 Java 插件,你可以這樣做
dependencies {
compile('group:module-b:1.0') { transitive = false }
}
如果您需要使用它們,這將迫使您顯式聲明 module-b 的傳遞依賴項。
注意:您可能會在運行時使用 module-b 獲得大量 ClassNotFoundException,因為現在您的類路徑中缺少 jar。 所以這可能會更好
dependencies {
compile('group:module-b:1.0') { transitive = false }
runtime 'group:module-b:1.0'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.