用Gradle 排除傳遞依賴
在Gradle 中,使用應用程式外掛程式產生jar 檔案時,可能會遇到傳遞依賴,您可能想要排除。為此,可以使用排除方法。
排除的預設行為
最初,嘗試排除 org.slf4j:slf4j- 的所有實例log4j12 使用以下程式碼:
configurations { runtime.exclude group: "org.slf4j", name: "slf4j-log4j12" }
但是,這導致排除所有 org.slf4j 工件,包括 slf4j-api。
自訂排除
為了細化排除,可以利用群組與模組屬性:
configurations { runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" }
此方法僅成功排除 org.slf4j:slf4j-log4j12,而不影響其他 slf4j 依賴項。
從單一依賴項排除
如果對於特定依賴項需要排除,可以使用下列語法:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", module: "slf4j-log4j12" } }
排除方法的限制
需要注意的是,雖然可以在排除中指定任意屬性,但從單一依賴項中排除時不允許這樣做。例如,以下程式碼將會失敗:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", name: "slf4j-log4j12" } }
出現以下錯誤訊息:
No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule
以了解Gradle 模組[cludeRule
了解Gradle 模組
在Gradle中,模組屬性對應於Maven的artifactId。因此,若要確定特定 Maven 工件的模組,請檢查其artifactId。例如,Maven 工件 org.slf4j:slf4j-log4j12 將具有 slf4j-log4j12.
的 Gradle 模組免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3