什么gradle任务从远程存储库中提取依赖项?

时间:2013-11-26 16:32:39

标签: android gradle android-studio

我正在为我的Android项目切换到Gradle。我已经从Eclipse将项目导入Android Studio并使用Gradle 1.8将其打包。

我的假设是Gradle以Maven的方式处理依赖关系,也就是说如果指定了本地存储库中不存在的依赖关系,它将从远程存储库中提取它。 Android Studio没有引入我的依赖项。我试图运行./gradlew androidDependencies --debug,但我没有看到任何依赖项的下载,但是它们被确认存在并且没有引发警告/错误。

11:11:36.833 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository] Using cached module metadata for module 'com.nostra13.universalimageloader#parent;1.8.6' in 'MavenRepo'
11:11:36.834 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain] Using module 'com.nostra13.universalimageloader:parent:1.8.6' from repository 'MavenRepo'
11:11:36.855 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder] Visiting configuration com.nostra13.universalimageloader:parent:1.8.6(default).
11:11:36.857 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder] Attaching com.nostra13.universalimageloader:parent:1.8.6(default) to its parents.

Gradle确实接受了依赖关系并在此位置创建了元数据

/home/wil/.gradle/caches/artifacts-26/filestore/com.nostra13.universalimageloader/parent/1.8.6/pom/41669498c2bec505b61772b083cab341653cb86b

有趣的是,我发现如果我在本地拥有maven依赖项,它会将其作为外部库引入Android Studio,它还会将jar添加到gradle缓存文件库中,它不会为我指定的远程依赖项执行此操作。

这是我的build.gradle

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

dependencies {
    compile 'com.nostra13.universalimageloader:parent:1.8.6'
}

android {
compileSdkVersion 19
buildToolsVersion "19"

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 17
}
sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['src']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }
    instrumentTest.setRoot('tests')
    debug.setRoot('build-types/debug')
    release.setRoot('build-types/release')
}
}

我正在运行Android Studio 0.3.6,Ubuntu 13.04,Gradle 1.8,JDK 6

我应该运行什么gradle命令来从maven存储库中删除远程依赖项?我错过了允许下载依赖项的配置设置吗?

2 个答案:

答案 0 :(得分:3)

通过使用gradle dependencies命令行,您可以下拉build.gradle中指定的所有内容

答案 1 :(得分:2)

一旦任务需要,就会自动下载远程依赖项。例如,如果您编译项目的代码,将下载编译依赖项,除非它们已存在于Gradle的依赖项缓存中。开箱即用,Gradle没有提供仅仅下载所有依赖项而不对它们做任何事情的任务,但是编写一个很容易。