【问题标题】:What gradle task pulls dependencies from remote repositories?什么 gradle 任务从远程存储库中提取依赖项?
【发布时间】:2013-12-11 22:13:14
【问题描述】:

我正在为我的 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 存储库中拉取远程依赖项?我是否缺少允许下载依赖项的配置设置?

【问题讨论】:

  • 远程依赖项会在任务需要时自动下载。这个没有任务。

标签: android gradle android-studio


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    远程依赖项会在任务需要时自动下载。例如,如果您编译项目的代码,编译依赖项将被下载,除非它们已经存在于 Gradle 的依赖项缓存中。开箱即用,Gradle 并没有附带一项任务,即仅下载所有依赖项而不对其进行任何操作,但编写一个任务很容易。

    【讨论】:

    • 当我在 Android Studio 中运行 Build->Compile 时没有发生这种情况。它没有说Gradle: package com.nostra13.universalimageloader.core does not exist。有什么建议可以调试为什么它们没有被获取?
    • 首先要检查的是它是否适用于普通的命令行 Gradle。 parent 工件 ID 可疑;通常这是用作另一个模块的父模块的模块的名称,并且构建将依赖于该另一个模块。将所有内容加在一起,这可能是您的问题的原因。
    • 说真的你不知道这让我有多头疼,我认为父 id 也很奇怪,在 repo 中进一步检查后,我找到了一个子模块并尝试了它并下载为预期的。非常感谢!
    • 父模块只有一个 POM 但没有主工件(即 Jar)。这解释了你所看到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2020-05-07
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多