Gradle buildscript 依赖项

Posted

技术标签:

【中文标题】Gradle buildscript 依赖项【英文标题】:Gradle buildscript dependencies 【发布时间】:2012-12-05 02:46:54 【问题描述】:

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

buildscript 
    repositories 
        mavenCentral();
    

repositories 
    mavenCentral();

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

如果我的 buildscript 和项目都需要 maven Central,是否需要声明两次? 是的,你确实需要指定两次。 作为一个例子,除了通常的“compile”和“testCompile”关键字之外,可以将 Spring propdeps 插件添加到 buildscript 以启用依赖项的“provided”和“optional”关键字。注意:war 插件已经提供了 "provided" 关键字,你只需要 propdeps 用于将部署在 war 中的 jar 项目。【参考方案2】:

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

构建脚本依赖项:

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 进程本身的依赖关系,而不是应用程序代码的依赖关系。从 buildscript repos 中可以找到各种 gradle 插件,如 gradle-cobertura-plugingradle-lint-plugin。这些插件不会被引用为应用程序代码的依赖项。

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

还有一点maven url("https://plugins.gradle.org/m2/") 部分可以在两个块中使用。因为它们用于不同的依赖项。

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

【讨论】:

以上是关于Gradle buildscript 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

如何使用单个build.gradle配置向kotlin多平台项目添加依赖项

C++学习(四一二)gradle的buildscript allprojects

在Gradle脚本中使用第三方依赖

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

使用android gradle插件3.0.0比gradle插件2.3.3慢