it-swarm.com.de

War das eine transitive Maven-Abhängigkeit?

Diese Frage soll kurz klären, was genau eine transitive Abhängigkeit ist und wie es auf sehr hohem Niveau in Maven funktioniert.

Meine Definition: In einem Abhängigkeitsbaum wie A -> B -> C ist C eine transitive Abhängigkeit für A . Angenommen, B hat den Geltungsbereich compile innerhalb von A.

Wenn C den Geltungsbereich compile innerhalb von B hat, dann B als Abhängigkeit von A reicht aus, um A mit Maven zu erstellen. Wenn jedoch C den Geltungsbereich bereitgestellt innerhalb von B hat, wird das Gebäude, wenn Maven A erstellt, nicht automatisch erstellt kompilieren Sie A gegen C, es sei denn A deklariert C unter seinen Abhängigkeiten.

Ist das richtig?

22
Johan

Ihre Annahme ist richtig.

Es gibt zwei Arten von Maven-Abhängigkeiten:

  • Direct: Dies sind Abhängigkeiten, die in Ihrer pom.xml-Datei im Abschnitt <dependencies/> definiert sind.

  • Transitive: Dies sind Abhängigkeiten, die Abhängigkeiten Ihrer direkten Abhängigkeiten sind.

Abhängigkeiten mit provided Gültigkeitsbereich sollen:

  • Entweder werden Sie vom endgültigen Artefakt ausgeschlossen (z. B. möchten Sie bei war-Dateien servlet-api, servlet-jsp usw. nicht angeben).
  • Oder überschreiben - wenn das Projekt, das diese erbt, eine Version definiert und/oder den Gültigkeitsbereich überschreibt
27
carlspring

Eine Abhängigkeit, die bei der Deklaration des Projekts angegeben werden soll, ist eine Abhängigkeit

0
mahsa