2012-03-09 3 views
12

Как я могу получить Ivy для разрешения зависимостей (включая зависимости от changing="true") от локального кеша при отключении/отключении?Разрешение зависимостей Айви Айви при отключении/отключении?

Я работаю над проектом на основе Java с открытым исходным кодом, который использует Apache Ivy для разрешения и загрузки зависимостей сторонних разработчиков. У проекта build.xml есть цель муравья с именем resolve, которая загружает Ivy (если необходимо), а затем использует Ivy для извлечения необходимых банок.

Все работает отлично, когда он-лайн. Однако без доступа в Интернет ant resolve не удается, даже если требуемые банки находятся в локальном кэше Ivy (~/.ivy2/cache). Похоже, что Ivy пытается подключиться к репозиторию Maven для обновления зависимостей changing="true".

Я получаю ошибку похож на следующее:

[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 

Запуск ant -verbose resolve как предложил предупредительные гравюр следующие строки в выводе:

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

Как я могу получить Ivy разрешить changing="true" зависимостей от кеша, когда он отключен, но продолжайте запрашивать репозиторий, каждый из которых создается в режиме онлайн?

+1

Я дал ответ на это в этот вопрос: http://stackoverflow.com/questions/6971517/how-do-i-tell-ivy4r-to-stay-offline – oers

+0

Это второй вопрос. На первый ответили –

+0

@Mark: Вы правы. Я отредактировал вопрос, чтобы удалить «как условно установить« ivy.cache.ttl.default = вечный »? потому что это отдельный вопрос. Но мой оригинальный вопрос - как разрешать зависимости в автономном режиме - все еще остается без ответа. –

ответ

11

oers ответил на вопрос, но это не очевидно.

Попробуйте запустить свой устанавливающее ivy.cache.ttl.default свойство из командной строки сборки:

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

Источники:

+0

Я надеюсь вы не возражаете, я обновил свой ответ с помощью некоторой информации, которую вы здесь дали, чтобы улучшить ее. – oers

+0

@oers Не против вообще. –

+0

Спасибо за ответ. К сожалению, '-Divy.cache.ttl.default = eternal' не работает для меня. См. Обновленный вопрос. –