为什么jcenter可以在mavenCentral可以解析依赖关系?

时间:2015-09-24 17:50:06

标签: android android-studio gradle maven-central jcenter

我有一个只有两个依赖项的项目,相对标准的appcompat-v7ion。所以我的gradle文件非常简单:

项目

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

应用

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "zz.yy.xx"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.koushikdutta.ion:ion:2.1.6'
}

事实上,我认为我自己添加的唯一内容是ion依赖。

我不是一个傻瓜大师,但我read multiple places jcenter is a so called superset of mavenCentral this answer。具体来说是this one

  

JCenter本身是Maven Central上的薄薄饰面。 代理(或多或少成功)并添加其他组件。两者都托管在CDN网络上且性能极高。 Maven Central本身是所有Eclipse,Apache和大多数其他开源项目的目标,没有它,JCenter将基本上是空的。

enter image description here

  

你永远不需要两者。 JCenter是Maven Central的超集,它应该足以满足所有依赖项。

     

我和Bintray背后的公司JFrog和[神器],请参阅我的个人资料以获取详细信息和链接。

让我相信,就提供软件包而言,它们基本相同,只有jcenter在某种程度上更好。特别是后一个答案的海报似乎知道他在说什么。

然而,我不能用jcenter拉入离子依赖。我总是得到这个错误

http://search.maven.org/#artifactdetails%7Ccom.koushikdutta.ion%7Cion%7C2.1.6%7Cjar

为了让它工作,我还需要添加mavenCentral。因此,上面的gradle片段不起作用,但如果我将allprojects更改为此

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

它神奇地开始工作。

这怎么可能?我已经确认两者都提供了包裹:

Gradle设置

{{3}}

我尝试过本地包装器但没有成功。

Android Studio 1.3.2
Gradle 1.3.0

0 个答案:

没有答案