Ivy beheben nicht arbeiten mit dynamischen Artefakt
Habe ich mit Ivy ein bisschen, aber ich glaube, ich habe noch eine Menge zu lernen.
Habe ich zwei Projekte. Ist eine web-app und das andere ist eine Bibliothek, auf die der web app hängt. Das set-up ist, dass die Bibliothek-Projekt wird kompiliert, um eine jar-Datei und veröffentlicht mit Ivy in ein Verzeichnis innerhalb des Projekts. In der web-Anwendung build-Datei, ich habe ein ant-target, ruft die Ivy beheben ant-task.
Was ich tun möchte, ist über die web-app mithilfe des dynamischen beheben-Modus während der Entwicklung (developer ' s lokaler Rechner) und die Standard-beheben-Modus für test und Produktion baut. Zuvor war ich anfügen eines Zeitstempels der Bibliothek-Archiv-Datei, so dass Ivy würde bemerken, die änderungen in der Datei, wenn die web-app versucht zu lösen, seine Abhängigkeit es. In Eclipse ist dies umständlich, da in der web-app, musste das Projekt werden aktualisiert, und in den build-Pfad angepaßt, jedes mal ein neues jar-Bibliothek veröffentlicht wurde. Publishing eine ähnlich genannte jar-Datei jedes mal wäre, finde ich, nur verlangen die Entwickler aktualisieren Sie das Projekt.
Das problem ist, dass die web-app ist nicht in der Lage zum abrufen der dynamischen jar-Datei.
Die Ausgabe die ich bekomme sieht ungefähr so aus:
resolve:
[ivy:configure] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/::
[ivy:configure] :: loading settings :: file = /Users/richard/workspace/webapp/web/WEB-INF/config/ivy/ivysettings.xml
[ivy:resolve] :: resolving dependencies :: com.webapp#webapp;[email protected]
[ivy:resolve] confs: [default]
[ivy:resolve] found com.webapp#library;latest.integration in local
[ivy:resolve] :: resolution report :: resolve 142ms :: artifacts dl 0ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 1 | 0 | 0 | 0 || 0 | 0 |
---------------------------------------------------------------------
[ivy:resolve]
[ivy:resolve] :: problems summary ::
[ivy:resolve] :::: WARNINGS
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: UNRESOLVED DEPENDENCIES ::
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :: com.webapp#library;latest.integration: impossible to resolve dynamic revision
[ivy:resolve] ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve] :::: ERRORS
[ivy:resolve] impossible to resolve dynamic revision for com.webapp#library;latest.integration: check your configuration and make sure revision is part of your pattern
[ivy:resolve]
[ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
BUILD FAILED
/Users/richard/workspace/webapp/build.xml:71: impossible to resolve dependencies:
resolve failed - see output for details
Die web-app beheben Ziel sieht wie folgt aus:
<target name="resolve" depends="load-ivy">
<ivy:configure file="${ivy.dir}/ivysettings.xml" />
<ivy:resolve
file="${ivy.dir}/ivy.xml"
resolveMode="${ivy.resolve.mode}"/>
<ivy:retrieve pattern="${lib.dir}/[artifact]-[revision].[ext]" type="jar" sync="true" />
</target>
In diesem Fall, ivy.beheben.mode hat den Wert 'dynamic' (ohne Anführungszeichen).
Die web-app Ivy-Datei ist einfach. Es sieht wie folgt aus:
<ivy-module version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="com.webapp" module="webapp"/>
<dependencies>
<dependency name="library" rev="${ivy.revision.default}" revConstraint="${ivy.revision.dynamic}" />
</dependencies>
</ivy-module>
Während der Entwicklung, ivy.revision.Dynamik hat einen Wert von 'die Letzte.integration". Während bei der Herstellung oder Prüfung 'ivy.revision.default' hat den Wert '1.0'.
Irgendwelche Ideen? Bitte lassen Sie mich wissen, wenn es gibt mehr Informationen, die ich brauche zu liefern.
Dank!
InformationsquelleAutor richever | 2010-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe Folgendes und es scheint zu funktionieren. Ich werde VORBEHALT, dies mit der Bestätigung, ich bin auch zu kämpfen mit Efeu und viele der Sachen, die ich gearbeitet haben ist ziemlich viel black-box-arbeiten... d.h. es macht den job, damit ich aufhören zu hantieren! Mein Verständnis ist etwas weniger weit Fortgeschritten ich habe Angst, zu sagen.
Anwyay, in settings.xml ich fügte hinzu:
Denen ich denke, dass sagt ivy zu verwenden seine Intelligenz, um die Arbeit mit diesen Modulen. Dass Intelligenz möglicherweise gehört die Prüfung, ob aktualisierte Versionen des Moduls zu beheben Zeit.
Auch, auf die Resolver fügte ich
checkModified
undchangingPattern
. Apparnntly es ist wichtig, dies zu tun, sowohl auf den eigentlichen resolver und die Verpackung der Kette (falls Sie eine haben):Den
checkModified
hoffentlich das tut, was es auf dem zinn sagt. Und ich nehme an, dass diechangingPattern
sagt ivy, um zu überprüfen, ob Artefakte, die dieses Muster haben ein neues update im repo. Ich persönlich bin mit einem maven-repo, wo modifizierbar Zeug immer hat -SNAPSHOT angehängt, so dass ist, warum ich verwenden, dass (ziemlich Häufig denke ich). Ich denke, man könnte diese ersetzenchangingPattern
mit ".*" oder etwas, das Ihnen besser passt.InformationsquelleAutor Alastair Brayne
Ich glaube, Sie brauchen, um die drop-Nutzung der revConstraint Attribut, in Ihre webapp ivy-Datei.
Ivy denkt, dass "die Letzte.revision" ist die revision, die Sie abrufen möchten, anstatt wirklich auf der Suche für die neueste Version 🙂
Ich würde empfehlen, nur die Einstellung der Abhängigkeit wie folgt:
Erklärung:
revConstraint wird festgelegt, wenn Sie veröffentlichen Sie ein Modul. Es zeichnet die neueste Version zum Zeitpunkt der Veröffentlichung. So brauchen Sie nicht es während der Entwicklung. Noch müssen Sie verwenden, revision, variable. Bei der Veröffentlichung eines ivy-Modul mit "neuesten.revision" oder "die Letzte.release" überarbeitung Verweise, die aufgelöst werden aufgenommen und in die revConstraint Attribut.
Finden Sie unter dem folgenden link für weitere Informationen:
http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html#revision-constraint
Ich habe auch versucht, indem changingPattern ohne Erfolg: <Dateisystem name="local" checkmodified="true" changingPattern="dev" - > Die jar-Bibliothek benannt ist libra-dev.jar.
Könnte Sie aktualisieren Sie Ihre post mit den neuen ivy-Ausgang? Auch könnten Sie bitte Ihre ivysettings-Datei (Falls Sie eine verwenden)
InformationsquelleAutor Mark O'Connor