Frage

Wie kann ich Gradle 1.10 dazu bringen, mein lokales Maven-Repository zu verwenden?Wenn ich mein Gradle-Skript ausführe, sucht es immer nach dem Artefakt in /Applications/Android Studio.app/sdk/extras/android/m2repository/ anstatt ${HOME}/.m2/repository/

Im build.gradle habe ich versucht:

repositories {
    mavenCentral()
    mavenLocal()
 }

und habe Folgendes probiert:

repositories {
    mavenCentral()
    maven {
        url '${HOME}/.m2/repository/'
    }
 }

Ich habe dann eine Abhängigkeit, die sich in meinem lokalen .m2-Repository befindet:

dependencies {
    compile 'com.android.support:support-v4:20.0.+'
    compile 'com.android.support:appcompat-v7:20.0.+'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.profferapp:proffer_dto_customer_android:1.0'
    compile 'com.test:artifact:1.0' // this is in my .m2 repository
}

Keine dieser Konfigurationen verweist auf mein lokales Maven-Repository.

War es hilfreich?

Lösung

Wenn Sie eine ${...}-Variablensubstitution durchführen möchten, müssen Sie doppelte Anführungszeichen (") anstelle von einfachen Anführungszeichen (') verwenden.Doppelte Anführungszeichen kennzeichnen GStrings, die das können, aber Zeichenfolgen mit einfachen Anführungszeichen werden immer wörtlich interpretiert.

Also:

repositories {
    mavenCentral()
    maven {
        url "${HOME}/.m2/repository/"
    }
 }

Stellen Sie sicher, dass Sie diesen Block in die Build-Datei Ihres Moduls einfügen, nicht in die buildscript Block der Build-Datei der obersten Ebene;Letzteres bestimmt nur, wo das Android-Plugin zu finden ist, nicht Ihre modulspezifischen Abhängigkeiten

Aufgrund der falsch zitierten Zeichenfolge wird Ihr lokales Repository wahrscheinlich nicht angezeigt.Auch die andere Frage zum Plugin, das das Maven-Repo implizit in Ihr SDK einfügt, ist ebenfalls richtig.Dadurch werden Abhängigkeiten zur Android-Unterstützung berücksichtigt.

Gradle Einfache vs. Doppelte Anführungszeichen enthält ein paar weitere Informationen und einen Link, dem Sie folgen können.

Andere Tipps

Ich möchte die Antwort von Scott Barta kommentieren, aber mein Ruf reicht nicht aus.

  1. $HOME funktioniert bei mir nicht (in CLI, nicht in Android Studio), System.getenv('HOME') jedoch
  2. Es ist nicht notwendig, den Repositories-Block in die build.gradle-Datei JEDES Moduls einzufügen. Fügen Sie den Block einfach in einen „allprojects“-Block im build.gradle der obersten Ebene ein (ich habe es gelernt). Hier)

Die endgültige Lösung, die ich verwende, ist also:

// in the top-level build.gradle:
buildscript {
    ...
}

allprojects {
    repositories {
        mavenCentral()
        maven { url System.getenv('HOME') + "/.m2/repository/" }
    }
}

Wenn Sie das tunapply plugin: 'android'

Das Android-Plugin fügt ein weiteres Repository hinzu – das unter Ihrem SDK.Es enthält diese Unterstützungs- und Erweiterungsbibliotheken. com.test:artifact:1.0 wird wahrscheinlich aus Ihrem lokalen Maven-Repository übernommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top