Maison >Java >javaDidacticiel >Comment exclure des dépendances transitives spécifiques dans Gradle ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 10:44:03760parcourir

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 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn