Maison >Java >javaDidacticiel >Comment exclure des dépendances transitives spécifiques dans Gradle ?
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 de l'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 artefacts org.slf4j, y compris slf4j-api.
Personnalisation les 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 avec succès uniquement org.slf4j:slf4j-log4j12 sans affecter les autres slf4j dépendances.
Exclure d'une dépendance individuelle
Si 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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!