2010-02-05 11 views
8

Ich habe ein paar JAR-Dateien, (von denen einige voneinander abhängig sind), und ich versuche, efeu verwalten sie für mein Projekt.Wie erstelle ich eine Ivy-Abhängigkeit für lokale jars in Ihrem Projekt/lib?

Ich möchte kein "lokales" (Benutzer-dir-basiertes) Repository erstellen, weil ich möchte, dass andere Benutzer mein svn-Projekt auschecken und es ohne lokales/gemeinsames Repository-Setup ausführen können. Aus verschiedenen Gründen kann ich diese Dateien nicht zu dem tatsächlichen Repository hinzufügen, das wir verwenden.

Das Projekt hängt von diesen Dateien ab und ich verwende sie in SVN. In der Vergangenheit hatte ich meine normalen Efeu-Abhängigkeits-XML-Dateien. Diese Dateien verwenden eine XML-Einstellungsdatei, die auf das Remote-Repository verweist. In der Vergangenheit, in letzter Minute, hatte ich eine Build-Aufgabe, um diese Dateien aus einem lib-Ordner in den gebauten Ordner zu kopieren. Dies fühlt sich an wie ein gebrochener Missbrauch, der die Funktionen des efy-Resolvers ignoriert.

(ivy.xml und build.xml für 3 bebaubare Projekte verwenden die gleiche ivysettings.xml, in einem anderen Basisverzeichnis.)

Ich fühle mich wie 90% des Weges dorthin bin, was soll ich darauf mein Dateisystem-Resolver in der Datei ivysettings.xml, um meine erste Lösung in der Resolver-Kettenprüfung für JAR-Dateien in projectdir/lib zu finden?

Antwort

3

Haben Sie sich die Efeuaufgabe buildlist angesehen?

Sie können dies verwenden, um die Reihenfolge zu steuern, in der Ihre 3 Module gebaut werden. Während jedes Modul erstellt wird, kann es in einem lokalen Repository veröffentlichen, um sicherzustellen, dass das jar rechtzeitig für das nächste Modul in der Kette vorhanden ist.

build.xml 
    ivysettings.xml 
    --> module1 --> build.xml 
        ivy.xml 
    --> module2 --> build.xml 
        ivy.xml 
    --> module3 --> build.xml 
        ivy.xml 

Ihre Einstellungsdatei kann von allen Projekten gemeinsam genutzt werden. Darin heißt es, dass die Module, die Sie lokal verfügbar bauen, alles andere ist aus dem Standard-Repository für alle Benutzer Ihres Projekts (in diesem Fall Maven)

<ivysettings> 
     <settings defaultResolver="maven2"/> 
     <resolvers> 
       <ibiblio name="maven2" m2compatible="true"/> 

       <filesystem name="local"> 
        <ivy pattern="${local.rep.dir}/.."/> 
        <artifact pattern="${local.rep.dir}/.."/> 
       </filesystem> 
     </resolvers> 
     <modules> 
       <module organisation="org.me" name="module1" resolver="local"/> 
       <module organisation="org.me" name="module2" resolver="local"/> 
       .. 
     </modules> 
</ivysettings> 

Endlich verfügbar, wenn Sie veröffentlichen extern können Sie den Efeu verwenden installieren Aufgabe, um die Module, die Sie bereits lokal veröffentlicht haben, in den Endlagerort zu kopieren