Ivy, was ist der master-Konfiguration und warum ist es nicht ziehen jvyaml?
Habe ich Folgendes ivy-Datei:
<configurations defaultconfmapping="buildtime">
<conf name="buildtime" visibility="private" description="Libraries needed only for compilation" />
<conf name="runtime" description="Libraries only needed at runtime" />
<conf name="test" description="Libraries only needed for testing" />
</configurations>
<dependencies>
<dependency org="net.java.dev" name="jvyaml" rev="0.2.1" conf="runtime" />
<dependency org="org.apache.solr" name="solr-core" rev="3.6.0" conf="runtime" />
</dependencies>
und ich habe eine Ameise abrufen von Aufgaben, die wie folgt aussieht:
<target name="retrieve-all" depends="resolve">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="*" />
</target>
Komisch ist, dass alle, die solr Abhängigkeiten herunterladen in lib/runtime als ich erwarten würde, aber die jvyaml Modul nicht! Es 'löst', aber nicht aus dem download in das lib/runtime-Verzeichnis, es sei denn, ich ändere die dependency-Deklaration:
<dependency org="net.java.dev" name="jvyaml" rev="0.2.1" conf="runtime->master" />
Was ist dieses master-Konfiguration und warum ist es notwendig, ziehen Sie die jvyaml Glas, aber nicht solr?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, die Umstrukturierung Ihrer Konfiguration wie folgt vor:
Wichtige änderungen eingeführt:
Konfiguration Zuordnungen erklärt
Konfigurationen sind ein leistungsfähiger ivy-Funktion. Wenn ivy downloads Maven-Module, die es führt eine interne übersetzung und weist einen standard-Satz von Konfigurationen, die in dieser Antwort:
Beim deklarieren einer Abhängigkeit, es ist eine gute Idee, um eine mapping-Konfiguration, so dass es besteht kein Zweifel, wo die Abhängigkeiten der Artefakte zugeordnet werden.
Beispiel:
Hier sagen wir, wir wollen, dass der remote-Modul die Standard-Abhängigkeiten im Zusammenhang mit unseren lokalen runtime-Konfiguration.
In der Praxis gibt es nur zwei remote-Konfiguration Zuordnungen, die Sie tatsächlich benötigen:
Abschließend, ich glaube, dein problem wurde verursacht durch die Tatsache, dass die remote-Maven-Modul "runtime" - Bereich ist nicht enthalten Maven Moduls Artefakt, sondern Sie waren immer die nicht-existierende transitive Abhängigkeiten des Moduls jvyaml 🙁
Einige zusätzliche Hinweise
Ich würde auch vorschlagen, die Erzeugung eines ivy (dependency management Bericht wie folgt:
Dem Bericht wird helfen, erklären, wie jede Abhängigkeit, die enden auf unterschiedliche Konfigurationen. Auch wirklich nützlich für die Bestimmung, wie transitive Abhängigkeiten verwaltet werden.
Und endlich, hier, wo die Konfiguration erbschaft auszahlt, erstellen von ivy verwaltet ANT klassenpfade:
Beachten Sie, dass die original-solr-core nicht abgerufen werden, entweder.
Nach Ihrem beheben, gehen Sie den cache und prüfen Sie die ivy.xml Dateien für beide Module.
Werden Sie sehen, dass Sie veröffentlichen Ihre Artefakte in conf=master nur
Was bedeutet, Sie haben zu tun die explizite Konfiguration Zuordnung zu Kennzeichnen, dass Ihre builtime Konfiguration sollte erinnern an die 'master' - Konfiguration der Abhängigkeiten. (überprüfen Sie die Konfiguration mapping).
JEDOCH die Abhängigkeiten des solr-core -, Konfigurations-Zuordnung, wie Sie sehen konnte, in der ivy.xml Datei:
Ich denke, es ist der master(*) Dingens.
Was ich normalerweise tun ist in meinem eigenen ivy.xml Datei, wenn ich erkläre Abhängigkeiten ich das mapping:
Hier einer sagt, die Laufzeit werden Erinnerungen an die master-Konfiguration in der gekennzeichneten Abhängigkeit.
Könnten Sie tun,
sowie