Подтвердить что ты не робот

Зависимости Maven от Android Studio/Gradle

Я использую систему сборки Gradle в комплекте с Android Studio. До сих пор я мог создавать многопроектные настройки, используя зависимости, которые хранятся в моей структуре проекта. Теперь я хотел бы использовать зависимость maven, но безрезультатно. Я написал очень простой файл build.gradle, который всегда терпит неудачу:

    buildscript {
        repositories {
            maven { url 'http://repo1.maven.org/maven2' }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.4'
        }
    }
    apply plugin: 'android'

    dependencies {
        compile 'com.google.android:support-v4:r7'
    }

    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 16
        }
    }

со следующим сообщением:

    * What went wrong:
        A problem occurred configuring project ':absabs'.
        > Failed to notify project evaluation listener.
           > Could not resolve all dependencies for configuration ':absabs:compile'.
              > Could not find com.google.android:support-v4:r7.
                Required by:
                    absabs:absabs:unspecified
....
Caused by: org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException: Could not find com.google.android:support-v4:r7.

Это происходит с любым артефактом, который я пробовал до сих пор. Любая идея о том, что не так?

Спасибо

4b9b3361

Ответ 1

Блок "репозитории" в секции buildscript применим только к среде сборки. Вам также необходимо указать, какой репозиторий использовать при разрешении зависимостей для создания вашего проекта, поэтому вам нужно добавить в файл build.gradle что-то вроде следующего:

repositories {
    mavenCentral()
}

Ваш полный файл будет выглядеть примерно так:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.android:support-v4:r7'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

Обратите внимание на два экземпляра "репозиториев". Вы можете узнать больше о том, что на самом деле означает gradle docs.

Ответ 2

Кажется, что текущая версия Android Studio не сразу забирает новые зависимости. Попробуйте перезапустить IDE.

Изменить: Это не требуется для Android Studio >= 0.1.4v. Он работает в действии Sync Project with Gradle file. Вы можете найти его под Tools > Android > Sync Project with Gradle file или просто кнопкой на панели инструментов.

Ответ 3

http://tools.android.com/tech-docs/new-build-system/user-guide

Примечание. Это влияет только на код, выполняющий сборку, а не на проект. Сам проект должен объявить свои собственные репозитории и зависимости. Это будет рассмотрено позже.

Итак, вы должны объявить

  repositories {
     mavenCentral()
  }

в области вашего проекта еще раз.

Ответ 4

Я сделал это следующим образом:

В Top build.gradle(Project: YourProject) Я добавил:

 buildscript {
     repositories {
         mavenCentral()
     }
     dependencies {
         classpath 'com.h2database:h2:1.4.187'
         //NOTE: you can get the latest version in http://mvnrepository.com/artifact/com.h2database/h2

         } 
 }

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

ПРИМЕЧАНИЕ. Я добавил это вместе с предопределенными репозиториями jcenter().

И затем для моего файла app/build.gradle я добавил какую-либо библиотеку или зависимость, в которой я нуждался:

dependencies {
....//Add dependency here
}

Ответ 5

Maven Maven продолжает использовать XML в качестве формата для записи спецификации сборки. Однако структура диаметрально отличается. У Maven есть свои проблемы. Менеджеры зависимостей не справляются с хорошими конфликтами между разными версиями одной и той же библиотеки (что-то гораздо лучше подходит Ivy). XML как формат конфигурации сборки строго структурирован и высоко стандартизирован. Настройка целей (целей) сложна. Поскольку Maven сосредоточен в основном на управлении зависимостями, сложные, настраиваемые скрипты сборки на самом деле сложнее писать в Maven, чем в граделе.