2010-02-05 5 views
8

Ho un paio di file jar, (alcuni dei quali dipendono l'uno dall'altro), e sto cercando di farli gestire da Edy per il mio progetto.Come creare una dipendenza Ivy per i jar locali all'interno del progetto/lib?

Non voglio creare un repository "locale" (user based), perché voglio che altri utenti siano in grado di controllare il mio progetto svn ed eseguirlo senza l'installazione del repository locale/condiviso. Per svariati motivi, non posso aggiungere questi file al repository attuale che stiamo utilizzando.

Il progetto dipende da questi file e li sto utilizzando in SVN. In passato, ho avuto i miei file xml di dipendenza da edera normale. Questi file utilizzano un file di impostazioni xml al repository remoto. In passato, all'ultimo minuto, ho dovuto usare un compito di costruzione per copiare questi file da una cartella di lib nella cartella costruita. Questo sembra un abuso interrotto che ignora le funzionalità del resolver del filesystem di edera.

(ivy.xml e build.xml per 3 progetti edificabili utilizzano lo stesso ivysettings.xml, in un'altra directory di base.)

Mi sento come se fossi il 90% del modo lì, che cosa devo puntare il mio risolutore di filesystem in ivysettings.xml per fare la mia prima risoluzione nella catena di resolver per verificare i file jar in projectdir/lib?

risposta

3

Hai esaminato l'attività dell'edera buildlist?

È possibile utilizzare questo per controllare l'ordine in cui sono costruiti i 3 moduli. Man mano che ogni modulo viene creato, può pubblicare su un repository locale, assicurandosi che il jar sia presente in tempo per il prossimo modulo della catena.

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

Il file delle impostazioni può essere condiviso da tutti i progetti. Essa afferma che i moduli si costruisce sono disponibili localmente, tutto il resto è dal repository di default a tutti gli utenti del progetto (in questo caso 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> 

Infine, quando si pubblica esternamente è possibile utilizzare l'edera installazione Attività per copiare i moduli che hai già pubblicato localmente nella posizione del repository finale