Студия Android, gradle никогда не использует мой локальный репозиторий maven
Как я могу получить gradle 1.10 для использования моего локального репозитория maven? Когда я запускаю свой gradle script, он всегда ищет артефакт в /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.
Ответы
Ответ 1
Если вы хотите выполнить подстановку переменных $ {...}, вам нужно использовать двойные кавычки (") вместо одинарных кавычек ('). Двойные кавычки обозначают строки GStrings, которые могут это делать, но строки с одинарными кавычками всегда интерпретируются буквально.
Итак:
repositories {
mavenCentral()
maven {
url "${HOME}/.m2/repository/"
}
}
Убедитесь, что вы поместили этот блок в файл сборки модуля, а не в блок buildscript
файла сборки верхнего уровня; последний только определяет, где найти плагин Android, а не ваши зависимые от модуля зависимости
Из-за неверно цитированной строки он, вероятно, не видит ваш локальный репозиторий. Кроме того, другой вопрос о плагине, неявно добавляющем репозиторий Maven в ваш SDK, также является правильным. Это подберет зависимости поддержки Android.
Gradle Single vs Double Quotes содержит немного больше информации и ссылку, по которой вы можете перейти.
Ответ 2
Я хочу прокомментировать ответ скотта Барта, но у меня недостаточно репутации.
- $ HOME не работает для меня (в CLI, а не в Android Studio), System.getenv('HOME') -
- нет необходимости помещать блок репозиториев в файл build.gradle КАЖДОГО модуля, просто поместите блок внутри блока "allprojects" в build.gradle верхнего уровня (я узнал об этом здесь)
Итак, последнее решение, которое я использую:
// in the top-level build.gradle:
buildscript {
...
}
allprojects {
repositories {
mavenCentral()
maven { url System.getenv('HOME') + "/.m2/repository/" }
}
}
Ответ 3
Когда вы это сделаете
apply plugin: 'android'
Плагин android добавляет еще один репозиторий - тот, который находится под вашим SDK. Он содержит библиотеки поддержки и расширения. com.test:artifact:1.0
, скорее всего, используется в виде локального репозитория Maven.