【问题标题】:Difference between depends and dependencies in gradlegradle中依赖和依赖之间的区别
【发布时间】:2018-10-20 12:43:18
【问题描述】:

gradle 构建文件中depends 关键字和dependencies 关键字有什么区别?我在以下情况下遇到了这些关键字:

取决于:

project(':tools:bnd-module-plugin') {
  description = "bnd plugin to build moduleinfo with ${rootProject.description}"
  sourceSets.main.java.srcDirs += project(':asm').sourceSets.main.java.srcDirs
  depends = ['biz.aQute.bnd:biz.aQute.bnd:3.4.0']
}

依赖:

subprojects {
  apply plugin: 'com.github.sherter.google-java-format'
  googleJavaFormat.toolVersion = '1.4'
  compileTestJava {
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
  }
  dependencies {
    requires.each { projectName -> compile project(projectName) }
    depends.each { artifactName -> compile artifactName }
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.0',
        'org.junit.jupiter:junit-jupiter-params:5.1.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.0'
    testCompile project(':asm-test')
  }
}

【问题讨论】:

  • @lu.koerfer 已编辑

标签: gradle build dependencies


【解决方案1】:

dependencies 关键字由 Project 实例的 a method 提供,build.gradle 文件将根据该实例进行评估。它允许通过DependencyHandler 配置多种类型的依赖项。您可以添加文件依赖、项目依赖和模块依赖,可以从 Maven 和 Ivy 存储库中解析。

由于它是由Project 实例直接提供的,它在每个 Gradle 项目中都可用。

Gradle API 中不存在 depends 关键字。然而,Gradle 提供了很多扩展和编程构建脚本的可能性。通过所谓的额外属性,可以在 Gradle 对象的范围内定义额外的属性,例如任务和项目。然后这些附加属性可以像您的示例中的常规 Gradle 属性一样使用。

我从您在线的示例中找到了full build script。在脚本的开头,subprojects 闭包用于为所有子项目定义额外属性

subprojects {
    [...]
    ext.provides = []  // The provided java packages, e.g. ['org.objectweb.asm']
    ext.requires = []  // The required Gradle projects, e.g. [':asm-test']
    ext.depends = []   // The external dependencies, e.g. ['junit:junit:4.12']
    [...]
}

providesrequireddepends 是 Groovy 列表,然后用于存储字符串。

您的第一个代码示例为:tools:bnd-module-plugin 子项目的depends 额外属性 设置了一个新列表。

您的第二个使用这些列表将模块 (depends) 或项目 (requires) 依赖项添加到所有子项目。

如您所见,depends 只是自定义 Gradle 脚本的一部分,而不是官方 Gradle API 的一部分,这与 dependencies 不同。

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2020-04-26
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2017-09-25
    • 2021-11-02
    • 1970-01-01
    • 2019-01-11
    相关资源
    最近更新 更多