Android studio, gradle никогда не использует мое локальное репозиторий maven

StackOverflow https://stackoverflow.com//questions/25015797

  •  21-12-2019
  •  | 
  •  

Вопрос

Как я могу заставить gradle 1.10 использовать мой локальный репозиторий maven?Когда я запускаю свой скрипт gradle, он всегда ищет артефакт в /Applications/Android Studio.app/sdk/extras/android/m2repository/ вместо ${HOME}/.m2/repository/

В build.gradle я попробовал:

repositories {
    mavenCentral()
    mavenLocal()
 }

и попробовал это:

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

Затем у меня есть зависимость, которая находится в моем локальном репозитории .m2:

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
}

Ни одна из этих конфигураций не указывает на мой локальный репозиторий maven.

Это было полезно?

Решение

Если вы хотите выполнить подстановку переменной ${...}, вам нужно использовать двойные кавычки (") вместо одинарных кавычек (').Двойные кавычки обозначают GStrings, которые могут это делать, но строки с одинарными кавычками всегда интерпретируются буквально.

Так:

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

Убедитесь, что вы поместили этот блок в файл сборки вашего модуля, а не в buildscript блок файла сборки верхнего уровня;последнее определяет только, где найти плагин для Android, а не зависимости, зависящие от вашего модуля

Из-за неправильно процитированной строки он, вероятно, не видит ваш локальный репозиторий.Кроме того, другой вопрос о плагине, неявно добавляющем репозиторий Maven в ваш SDK, также верен.Это позволит определить зависимости от поддержки Android.

Одинарные и двойные кавычки Gradle содержит немного больше информации и ссылку, по которой вы можете перейти.

Другие советы

Я хочу прокомментировать ответ Скотта Барта, но у меня недостаточно репутации.

  1. $HOME у меня не работает (в CLI, а не в Android Studio), System.getenv('HOME') работает
  2. нет необходимости помещать блок repositories в файл build.gradle КАЖДОГО модуля, просто поместите блок внутри блока "allprojects" в build.gradle верхнего уровня (я научился этому здесь)

Итак, окончательное решение, которое я использую, - это:

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

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

Когда ты это сделаешь apply plugin: 'android'

плагин Android добавляет еще один репозиторий - тот, что находится под вашим SDK.Он содержит эти библиотеки поддержки и расширений. com.test:artifact:1.0 скорее всего, он взят из вашего локального репозитория Maven.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top