Exclusion des dépendances transitives avec Gradle
Dans Gradle, lors de l'utilisation du plugin d'application pour générer un fichier jar, il est possible de rencontrer des dépendances transitives qui vous souhaiterez peut-être exclure. Pour ce faire, la méthode d'exclusion peut être utilisée.
Comportement par défaut d'exclusion
Initialement, une tentative a été faite pour exclure toutes les instances de org.slf4j:slf4j- log4j12 en utilisant le code suivant :
configurations { runtime.exclude group: "org.slf4j", name: "slf4j-log4j12" }
Cependant, cela a entraîné l'exclusion de tous les artefacts org.slf4j, y compris slf4j-api.
Personnalisation des exclusions
Pour affiner l'exclusion, les propriétés du groupe et du module peuvent être utilisées :
configurations { runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" }
Cette approche exclut uniquement org.slf4j:slf4j-log4j12 sans affecter les autres dépendances slf4j.
Exclure d'une dépendance individuelle
Si le l'exclusion est souhaitée pour une dépendance spécifique, la syntaxe suivante peut être utilisée :
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", module: "slf4j-log4j12" } }
Limitations de la méthode Exclude
Il est important de noter que même si des propriétés arbitraires peuvent être spécifiées dans les exclusions, cela n'est pas autorisé lors de l'exclusion de dépendances individuelles. Par exemple, le code suivant échouera :
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", name: "slf4j-log4j12" } }
avec le message d'erreur suivant :
No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule
Comprendre les modules Gradle
Dans Gradle, la propriété module correspond à l'artefact Maven. Par conséquent, pour déterminer le module d’un artefact Maven particulier, inspectez son artefactId. Par exemple, l'artefact Maven org.slf4j:slf4j-log4j12 aurait un module Gradle de slf4j-log4j12.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3