簡體   English   中英

如果直接使用傳遞依賴,gradle 構建失敗?

[英]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 個插件可能是您正在尋找的。

  1. https://github.com/wfhartford/gradle-dependency-analyze

    自述文件

    這個插件試圖復制 maven 依賴插件的分析目標的功能,如果依賴被聲明但未使用或使用但未聲明,則構建失敗。

  2. https://github.com/nebula-plugins/gradle-lint-plugin

    未使用的依賴規則維基頁面上:

    1. 將代碼直接使用的傳遞依賴項提升為顯式一階依賴項

我不得不說我自己都沒有使用過任何一種,但它們似乎解決了您的擔憂。

我認為您想使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM