2016-11-06 2 views
1

Das ist meine Grundeinstellung:Warum drückt Gradle eine Abhängigkeit zu meinem maven Repo, während Abhängigkeiten aufgelöst werden?

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

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

Von meinem Verständnis davon, wie die Auflösung von Abhängigkeiten funktioniert, sollte gradle versuchen und für die Abhängigkeit zuerst in meinem Repo sucht, dann in jCentral() und dann in mavenLocal.

Stattdessen erhalte ich diese Ausgabe auf ./gradlew montieren:

: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 

In der Tat, wenn ich einen Blick in meinem Repository, um zu sehen, was passiert, ich habe die opencv Abhängigkeit gefunden als Folge gedrückt wurde von die Abhängigkeitsauflösung.

Ich würde stattdessen erwarten, das Artefakt von jcenter heruntergeladen werden, wo es tatsächlich vorhanden ist.

Ich benutze Apache Archiva.

Warum passiert das? Ist dieses Verhalten irgendwo dokumentiert? Ich verstehe nicht, ob das ein Problem mit meinen Repository-Einstellungen oder mit dem Skript ist.

+0

Repräsentiert Ihr Repo ein zentrales Repository? – tddmonkey

+0

Wahrscheinlich, heißt das, dass jedes einzelne Artefakt in mein Repository verschoben und nicht direkt von jcenter heruntergeladen wird? – Lake

Antwort

0

Für Apache Archiva, die Caching-Einstellungen konfigurierbar sind unter "Proxy-Connectors" und dokumentiert kontaktieren jcenter, um zu versuchen:

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

Sie können im Grunde Wählen Sie aus, wie häufig (oder überhaupt nicht) die Artefakte aus dem gespiegelten Repo zwischengespeichert werden sollen, um sie in nachfolgenden Anforderungen zu verwenden.

2

Wenn Ihr Repository ist die zentrale Repo-Spiegelung, was dann geschieht, ist dies:

  1. Gradle versucht, eine Abhängigkeit von Ihrem Repo zu finden
  2. Ihr Repo es hat, so dass er in Kontakt mit dem Upstream-Repo, dass es spiegelt
  3. Abhängigkeit von dem vorgeschalteten Repo heruntergeladen und wird in Ihrem Repo
  4. Abhängigkeit zwischengespeichert Gradle handed ist

Dies lässt Gradle nie die Chance, direkt hier :)

+0

Danke für die Antwort :) Ich könnte mir die Schritte 1), 2) und 4) vorstellen, aber ist 3) obligatorisch oder sollte es konfigurierbar sein? Ich würde die Möglichkeit in Betracht ziehen, mein persönliches Repo nicht mit jeder einzelnen Abhängigkeit zu überschwemmen, die es bei der Verwendung speichert :) – Lake

+0

Ich glaube, dass 2) und 3) ziemlich miteinander verbunden sind :) Sie können versuchen, die Repo-Spiegelung abzuschalten. Ich habe Archiva nicht benutzt, weiß also nicht wie. – Nikem

+0

Ich habe endlich die Einstellungen herausgefunden. Danke für die konzeptionelle Anleitung ^^ – Lake

Verwandte Themen