2012-03-09 11 views
12

Come posso convincere Ivy a risolvere le dipendenze (incluse le dipendenze con changing="true") dalla cache locale quando sono offline/disconnessi?Risoluzione delle dipendenze di Apache Ivy quando è offline/disconnesso?

Sto lavorando a un progetto open source basato su Java che utilizza Apache Ivy per risolvere e scaricare le dipendenze di terze parti. Il build.xml del progetto ha un target di formica denominato resolve che scarica Ivy (se necessario) e quindi utilizza Ivy per recuperare i jar necessari.

Tutto funziona alla grande quando online. Tuttavia, senza l'accesso a Internet, ant resolve ha esito negativo anche se i jar necessari si trovano nella cache Ivy locale (~/.ivy2/cache). Sembra che Ivy stia cercando di connettersi al repository Maven per aggiornare le dipendenze changing="true".

L'errore che ottengo è simile al seguente:

[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. 
[ivy:retrieve] You probably access the destination server through a proxy server that is not well configured. 
[ivy:retrieve] 
[ivy:retrieve] :: problems summary :: 
[ivy:retrieve] :::: WARNINGS 
[ivy:retrieve] Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] Host repo.example.com not found. url=http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve]   module not found: exampleorg#examplename;examplerev 
[ivy:retrieve] ==== local: tried 
[ivy:retrieve] ~/.ivy2/local/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] ~/.ivy2/local/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve] ==== shared: tried 
[ivy:retrieve] ~/.ivy2/shared/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] ~/.ivy2/shared/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve] ==== repo: tried 
[ivy:retrieve] http://repo.example.com/exampleorg/examplename/examplerev/ivys/ivy.xml 
[ivy:retrieve] -- artifact exampleorg#examplename;examplerev!examplename.jar: 
[ivy:retrieve] http://repo.example.com/exampleorg/examplename/examplerev/jars/examplename.jar 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   ::   UNRESOLVED DEPENDENCIES   :: 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve]   :: exampleorg#examplename;examplerev: not found 
[ivy:retrieve]   :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:retrieve] 
[ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS 

BUILD FAILED 
~/exampleproj/build.xml:123: impossible to resolve dependencies: 
     resolve failed - see output for details 

Esecuzione ant -verbose resolve come suggerito dalle stampe di avvertimento la seguente riga nell'output:

[ivy:retrieve] don't use cache for exampleorg#examplename;examplerev: changing=true 

Come posso ottenere Ivy per risolvere changing="true" dipendenze dalla cache quando è offline, ma continuare a interrogare il repository ogni build quando è online?

+1

Ho dato una risposta a questo in questa domanda: http://stackoverflow.com/questions/6971517/how-do-i-tell-ivy4r-to-stay-offline – oers

+0

Questa è una seconda domanda. Il primo è stato risposto –

+0

@ Mark: Hai ragione. Ho modificato la domanda per rimuovere "come impostare in modo condizionale" ivy.cache.ttl.default = eternal'? " parte perché quello è un problema separato. Ma la mia domanda iniziale - come risolvere le dipendenze quando offline - è ancora senza risposta. –

risposta

11

oers ha risposto alla domanda, ma non è ovvio.

Provare a eseguire la vostra impostazione del ivy.cache.ttl.default proprietà dalla riga di comando di compilazione:

ant -Divy.cache.ttl.default=eternal build 

Fonti:

+0

Spero non ti dispiace, ho aggiornato la mia risposta con alcune delle informazioni che hai fornito qui, per migliorarlo. – oers

+0

@oers Non ti dispiace affatto. –

+0

Grazie per la risposta. Sfortunatamente, '-Divy.cache.ttl.default = eternal' non funziona per me. Si prega di consultare la domanda aggiornata. –