2016-11-06 2 views
1

Это моя основная установка:Почему gradle нажимает зависимость от моего maven-репо при разрешении зависимостей?

// Dependencies 
repositories { 
    maven { url "http://MYREPO.." } 
    jcenter() 
    mavenLocal() 
} 

dependencies { 
    compile 'org.bytedeco.javacpp-presets:opencv:3.1.0-1.2' 
} 

Из моего понимания того, как зависимость разрешения работы, Gradle должен стараться и стремиться к зависимости первым в моем репо, то в jcentral(), а затем в mavenLocal.

Вместо этого, я получаю этот выход на ./gradlew сборки:

:compileJava 
Download http://MYREPO.../org/bytedeco/javacpp-presets/opencv/3.1.0-1.2/opencv-3.1.0-1.2.jar 
:processResources UP-TO-DATE 
:classes 
:jar UP-TO-DATE 
:assemble UP-TO-DATE 

BUILD SUCCESSFUL 

В самом деле, когда я взгляну внутри моего хранилища, чтобы посмотреть, что происходит, я обнаружил, что зависимость OpenCV толкания как следствие разрешение зависимостей.

Я ожидал бы, что артефакт будет загружен из jcenter, где он действительно присутствует.

Я использую apache archiva.

Почему это происходит? Является ли это поведение документированным где-то? Я не понимаю, если это проблема с настройками моего репозитория или сценарием градиента.

+0

Является ли ваше репо зеркалом центрального хранилища? – tddmonkey

+0

Возможно, это означает, что каждый артефакт будет перенесен в мой репозиторий и не загружен непосредственно из jcenter? – Lake

ответ

0

Для Apache Archiva, настройки кэширования можно настраивать в разделе «Прокси-коннекторов» и описываемая здесь:

http://archiva.apache.org/docs/1.4-M4/adminguide/proxy-connectors.html

Вы можете в основном выберите, как часто (или вообще нет) кэшировать артефакты из зеркального репо для использования в последующих запросах.

2

Если ваш репозиторий зеркалирование центрального репозитория, то, что происходит:

  1. Gradle пытается найти зависимость от вашего репо
  2. Вашего репо действительно есть, поэтому он контактирует вверх по течению репо, что это зеркальное отображение
  3. Dependency загружается из вышестоящего репо и кэшируется в вашем репо
  4. Dependency вручается Gradle

никогда Это не оставляет Gradle шанс попытаться связаться jcenter непосредственно :)

+0

Спасибо за ответ :) Я мог бы представить шаги 1), 2) и 4), но 3) обязательный или он должен быть настроен? Я бы рассмотрел возможность того, что мое личное репо не затоплено каждой отдельной зависимостью, которую он кэширует при ее использовании :) – Lake

+0

Я считаю, что 2) и 3) вполне связаны :) Вы можете попытаться отключить зеркалирование репо. Не использовал Archiva, поэтому не знаю, как это сделать. – Nikem

+0

Я наконец выяснил настройки. Спасибо за концептуальное руководство ^^ – Lake

Смежные вопросы