Kann Maven bereitgestellten scoping, werden transitiv?
Ich habe einen Vorfahr, der Abhängigkeit ist abhängig Gültigkeitsbereich wie muss ich propagieren, dass die scoping-auf alles, was kommt auf meine Projekt.
Zum Beispiel, sagen, ich habe SomeProjectA
abhängig SomeLibraryB
. Ich brauche Umfang SomeLibraryB
zur Verfügung gestellt hat.
Derzeit etwas zu kompilieren, dass hängt davon ab SomeProjectA
hat auch zu setzen SomeLibraryB
zur Verfügung gestellt hat. Ich würde eher zu propagieren, dass die Festlegung des lösungsumfangs ist, dann müssen alle Projekte, die davon abhängen, mine befassen sich mit meinem Projekt die Angehörigen..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass das möglich ist. Jedes Projekt sollte erklären, sofern Abhängigkeiten auf seine eigenen. Vermehrung, der Umfang wäre falsch, denn Sie würden eine Annahme über die Bereitstellung, dass Sie machen kann, da Sie nicht verantwortlich sind für die Bereitstellung an. Die Benutzer der Bibliothek nicht, dass..
Einfachen hack
Erreicht werden kann dies durch einen simplen hack.
Können Sie ausschließen
SomeLibraryB
undSomeLibraryC
innen Ihre direkte Abhängigkeit-tag.Unten ist die Abhängigkeit-tag für Ihre
SomeProjectA
.Aber wenn Sie diese Konfiguration, tests und Zusammenstellung andere Validierungen wird beginnt zu scheitern. Daher, Sie können direkte Abhängigkeiten zu den Bibliotheken mit
<scope>test</scope>
.Wie Sie sehen können aus die Maven Dokumentation, die zur Verfügung gestellt Umfang keinen Einfluss auf die Zusammenstellung, aber Laufzeit. Im Allgemeinen sollten Sie nur angeben müssen, die vorgesehenen Umfang in die Abhängigkeiten für eine Verpackungs Projekt, wie ein Projekt vom Typ Krieg. Aus diesem Grund ist es in der Regel nicht viel aus, dass es nicht transitiv.
In anderen Worten, wenn Sie hinzufügen einer Abhängigkeit zu einer
jar
Projekt ohne explizite Angabe, den Geltungsbereich, die Abhängigkeit zur Verfügung gestellt werden, während der Kompilierung und so wird das dependency, die Abhängigkeiten. Wenn Sie dann erklären ausdrücklich, dass Abhängigkeit zu Umfang zur Verfügung gestellt haben, dies nicht ändern.provided
Einfluss Zusammenstellung. Zweitens, Konzept vorgesehen, sollten nur verwendet werden, durch KRIEG, geht zu weit. Dieser Ansatz löst vorausgesetzt-nicht-transitive Problem, aber es kostete KRIEG Konfiguration, die die Komplexität. JAR-config ist einfacher, KRIEG config ist komplexer. Wenn Sie zum verwalten von mehreren Kriegen, die Sie bevorzugen GLAS, die brauchen nicht extra "zur Verfügung gestellt" Konfigurationprovided
Umfang einer Abhängigkeit in eine jar-pom und Sie werden sehen, dass es kompiliert wird, in genau der gleichen Weise. Außerdemprovided
Einflüsse Verpackung, nicht Kompilation, also macht es keinen Sinn es in einer pom, die nicht durchführen jegliche Verpackung. Übrigens habe ich nie geschrieben, die zur Verfügung gestellt werden sollten, nur verwendet, im Krieg pom ist.provided
gilt für Verpackungen Projekt kann oder kann nicht für den konkreten Fall und kann nicht behandelt werden wie empfohlen Vorgehen.compile
- Bereich, der Abhängigkeit zur Verfügung gestellt wird während der Kompilierung, während der Prüfung, und wenn das Projekt enthält eine Verpackung Schritt, die Abhängigkeit ist verpackt, zusammen mit den anderen Abhängigkeiten. Wenn Sie ändern die Abhängigkeitprovided
es noch verfügbar ist, für die Zusammenstellung und Prüfung, aber es ist nicht enthalten in der Verpackung. Dies ist, wie Maven funktioniert. Sie können tun, was Sie möchten, aber dies wird sich nicht ändern.provided
, es ist sichtbar für compilantion aber nicht im KRIEG. In anderen Worten, es beeinflusst Zusammenstellung und keinen Einfluss auf die Verpackung. Soweit ich dir Folgen, wenn Sie den Bereich ÄNDERN voncompile
zuprovided
die Zusammenstellung ist nicht betroffen, aber die Verpackung beeinflusst wird. Ich denke immer noch, Sie zu beantworten ist schlecht worder jetzt, aber wenn Sie klarstellen, dass Sie die mittlere Veränderung voncompile
zuprovided
dann wird es immer mehr klar