2013-08-30 3 views
6

Gibt es einen gültigen Anwendungsfall für zwei verschiedene Versionen des gleichen Artefakts in der Abhängigkeitsverwaltung Ihres POM?Maven - Mehrere Artefaktversionen im Abhängigkeitsmanagement

Ich suche ein Projekt, dessen Wurzel POM ein solches Beispiel enthält. Das Projekt selbst verfügt über mehrere Module, die unterschiedliche Versionen dieser "Duplikatabhängigkeit" verwenden. Einige der Module müssen daher die Version des Artefakts explizit unter ihren Abhängigkeiten spezifizieren, um zwischen den beiden zu unterscheiden.

Wenn die POM-Dateien der Module sowieso die Version angeben müssen, was ist der Grund für die Duplizierung in der Abhängigkeitsverwaltung der Eltern? Die Abhängigkeit würde auch dann ordnungsgemäß nachgeschlagen werden, wenn sie aus dem Abhängigkeitsmanagement entfernt würde. Warum also sollten Sie sie dort duplizieren?

Ich versuche nur herauszufinden, ob dies eine gute Praxis ist oder ob es eine bessere Lösung für eine solche Situation gibt.

Antwort

7

Eigentlich, wenn Sie Maven3 + verwenden, erhalten Sie eine Warnung wie diese:

[WARNING] 
[WARNING] Some problems were encountered while building the effective model for groupId:artifactId:jar:1.0-SNAPSHOT 
[WARNING] 'dependencyManagement.dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: junit:junit:jar -> version 3.8.1 vs 3.0 @ line 15, column 18 
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. 
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects. 
[WARNING] 

Maven wird die erste abholen, so dass der zweite wird nie verwendet werden. Entfernen Sie es einfach, um mehr Verwirrung zu vermeiden :)