Heim  >  Artikel  >  Java  >  Wie schließe ich bestimmte transitive Abhängigkeiten in Gradle aus?

Wie schließe ich bestimmte transitive Abhängigkeiten in Gradle aus?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 10:44:03661Durchsuche

How to Exclude Specific Transitive Dependencies in Gradle?

Transitive Abhängigkeiten mit Gradle ausschließen

Wenn Sie in Gradle das Anwendungs-Plugin zum Generieren einer JAR-Datei verwenden, können transitive Abhängigkeiten auftreten Vielleicht möchten Sie es ausschließen. Um dies zu erreichen, kann die Ausschlussmethode verwendet werden.

Standardverhalten von Ausschließen

Zunächst wurde versucht, alle Instanzen von org.slf4j:slf4j- auszuschließen. log4j12 mithilfe des folgenden Codes:

configurations {
  runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}

Dies führte jedoch zum Ausschluss aller org.slf4j-Artefakte, einschließlich slf4j-api.

Customizing die Ausschlüsse

Um den Ausschluss zu verfeinern, können die Gruppen- und Moduleigenschaften verwendet werden:

configurations {
  runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

Dieser Ansatz schließt erfolgreich nur org.slf4j:slf4j-log4j12 aus, ohne andere slf4j zu beeinträchtigen Abhängigkeiten.

Aus einer einzelnen Abhängigkeit ausschließen

Wenn der Ausschluss für eine bestimmte Abhängigkeit gewünscht wird, kann die folgende Syntax verwendet werden:

dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", module: "slf4j-log4j12"
  }
}

Einschränkungen der Ausschlussmethode

Es ist wichtig zu beachten, dass in Ausschlüssen zwar beliebige Eigenschaften angegeben werden können, dies jedoch beim Ausschluss von einzelnen Abhängigkeiten nicht zulässig ist. Beispielsweise schlägt der folgende Code fehl:

dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", name: "slf4j-log4j12"
  }
}

mit der folgenden Fehlermeldung:

No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule

Gradle-Module verstehen

In Gradle , die Moduleigenschaft entspricht der Maven-Artefakt-ID. Um das Modul eines bestimmten Maven-Artefakts zu bestimmen, überprüfen Sie daher dessen Artefakt-ID. Beispielsweise hätte das Maven-Artefakt org.slf4j:slf4j-log4j12 ein Gradle-Modul von slf4j-log4j12.

Das obige ist der detaillierte Inhalt vonWie schließe ich bestimmte transitive Abhängigkeiten in Gradle aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn