"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment exclure des dépendances transitives spécifiques dans Gradle ?

Comment exclure des dépendances transitives spécifiques dans Gradle ?

Publié le 2024-11-06
Parcourir:635

How to Exclude Specific Transitive Dependencies in 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 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.

Dernier tutoriel Plus>

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