2012-03-09 13 views
12

W jaki sposób mogę uzyskać Ivy, aby rozwiązać zależności (w tym zależności z changing="true") z lokalnej pamięci podręcznej, gdy jest offline/odłączony?Rozwiązywanie zależności Apache Ivy w trybie offline/rozłączonym?

Pracuję nad opartym na Javie projektem open-source, który wykorzystuje Apache Ivy do rozwiązywania i pobierania zależności od innych podmiotów. Projekt build.xml ma mrówkę o nazwie resolve, która pobiera Ivy (w razie potrzeby), a następnie wykorzystuje Ivy do pobrania wymaganych słoików.

Wszystko działa doskonale w trybie online. Jednak bez dostępu do Internetu, ant resolve kończy się niepowodzeniem, nawet jeśli wymagane słoiki znajdują się w lokalnej pamięci podręcznej bluszczu (~/.ivy2/cache). Wygląda na to, że Ivy próbuje połączyć się z repozytorium Maven, aby odświeżyć zależności changing="true".

Błąd pojawia się podobny do następującego:

[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 

Running ant -verbose resolve jak sugeruje odcisków ostrzegawczych następujący wiersz na wyjściu:

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

Jak mogę uzyskać Ivy rozwiązać changing="true" zależności od pamięci podręcznej w trybie offline, ale nadal pytaj repozytorium o każdą kompilację w trybie online?

+1

Dałem odpowiedź na to w to pytanie: http://stackoverflow.com/questions/6971517/how-do-i-tell-ivy4r-to-stay-offline – oers

+0

To drugie pytanie. Odpowiedź na pierwszą odpowiedź: –

+0

@ Mark: Masz rację. Edytowałem pytanie, aby usunąć "jak warunkowo ustawić" ivy.cache.ttl.default = eternal'? " część, ponieważ jest to osobny problem. Ale moje pierwotne pytanie - jak rozwiązywać zależności w trybie offline - wciąż pozostaje bez odpowiedzi. –

Odpowiedz

11

oers odpowiedział na pytanie, ale nie jest to oczywiste.

Spróbuj uruchomić swój build ustawienie właściwości z linii poleceń ivy.cache.ttl.default:

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

Źródła:

+0

Mam nadzieję nie masz nic przeciwko, zaktualizowałem swoją odpowiedź, podając niektóre z podanych tutaj informacji, aby ją poprawić. – oers

+0

@ woers Nie przeszkadza w ogóle. –

+0

Dzięki za odpowiedź. Niestety, '-Divy.cache.ttl.default = eternal' nie działa dla mnie. Zobacz zaktualizowane pytanie. –

Powiązane problemy