在gradle构建的buildscript部分声明存储库和在构建的根级别声明存储库有什么区别?

buildscript {
    repositories {
        mavenCentral();
    }
}

repositories {
    mavenCentral();
}

当前回答

buildscript块中的存储库用于获取buildscript依赖项的依赖项。这些是放置在构建的类路径上的依赖项,您可以从构建文件中引用它们。例如,存在于互联网上的额外插件。

根级别的存储库用于获取项目所依赖的依赖项。编译项目所需的所有依赖项。

其他回答

我想给你们一个清晰的概念。出于这个原因,我附加构建。对快照代码进行分级以便更好地理解。

buildscript依赖性:

buildscript {
    repositories {
        maven { url("https://plugins.gradle.org/m2/") }
    }

    dependencies {
        classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
        classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
    }
}

根级/核心依赖:

repositories{
    mavenLocal()
    maven { url("https://plugins.gradle.org/m2/") }
    maven { url "https://repo.spring.io/snapshot" }
}

dependencies {
        //Groovy
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'

        //Spock Test
        compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'

        //Test
        testCompile group: 'junit', name: 'junit', version: '4.10'
        testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}

首先,我想用一个词来说明

I) buildscript依赖jar文件将从下载 buildscript存储库。[项目外部依赖] Ii)根级依赖jar文件将从根下载 层次存储库。[项目依赖关系]

在这里,

“buildscript”块只控制buildscript进程本身的依赖关系,而不是应用程序代码。由于各种gradle插件,如gradle-cobertura-plugin, gradle-lint-plugin都是在buildscript reppos中找到的。这些插件不会作为应用程序代码的依赖项被引用。

但对于项目编译和测试运行的jar文件,如groovy all jar, junit和testng jar将从根级别存储库中找到。

另外,maven {url("https://plugins.gradle.org/m2/")}部分可以在两个块中使用。因为它们用于不同的依赖关系。

资源链接:buildscript闭包和核心依赖之间的区别

buildscript块中的存储库用于获取buildscript依赖项的依赖项。这些是放置在构建的类路径上的依赖项,您可以从构建文件中引用它们。例如,存在于互联网上的额外插件。

根级别的存储库用于获取项目所依赖的依赖项。编译项目所需的所有依赖项。