Gradle buildscript依赖项

时间:2012-12-17 23:07:11

标签: build repository gradle

在gradle构建的buildScript部分或构建的根级别中声明存储库之间有什么区别。

选项1:

的build.gradle

buildScript {
    repositories {
        mavenCentral();
    }
}

的build.gradle

repositories {
    mavenCentral();
}

3 个答案:

答案 0 :(得分:148)

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

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

答案 1 :(得分:14)

构建脚本(即build.gradle)可能对构建脚本本身的执行有一些依赖性。您可以将这些依赖项包含在buildScript块中。 Chapter 4 of Gradle Beyond the Basics详细描述了它。

答案 2 :(得分:5)

我想给你清楚的概念。出于这个原因,我附加 build.grade 快照代码以便更好地理解。

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)将从中下载buildcript依赖项jar文件   buildscript存储库。 [项目外部依赖]

     

ii)将从root下载根级依赖jar文件   级别存储库。 [对于项目依赖性]

下面,

“buildscript”块仅控制buildscript进程本身的依赖关系,而不是应用程序代码的依赖关系。正如各种gradle插件一样,gradle-cobertura-plugingradle-lint-plugin可以从buildscript repos中找到。这些插件不会被引用为应用程序代码的依赖项。

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

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

资源链接: Difference between dependencies within buildscript closure and core