Gradle:什么是默认配置以及如何更改它

时间:2013-11-12 18:19:16

标签: gradle

当我运行“dependencies”任务时,有几个部分:compile,runtime,testCompile ......

其中一个部分是“默认 - 默认工件的配置”。这部分是什么以及它用于什么?

如何更改“默认配置”中的内容?

详细信息: Gradle 1.7

3 个答案:

答案 0 :(得分:23)

除非您的构建是发布Ivy模块,否则default配置在多项目构建中处理项目依赖项时主要相关。给定项目A和B的多项目构建,如果A在没有明确命名配置的情况下声明项目依赖于B(例如dependencies { compile project(":B") },则A(更准确地说是A compile配置)将取决于项目B的default配置。换句话说,dependencies { compile project(":B") }dependencies { compile project(path: ":B", configuration: "default") }的快捷方式。

default配置从runtime配置扩展,这意味着它包含runtime配置的所有依赖项和工件,可能还有更多。您可以通常的方式添加依赖项和工件(在B的构建脚本中使用dependencies / artifacts块)。或者,B可以声明自定义配置,A可以通过明确命名该配置来依赖于此(例如dependencies { compile project(path: ":B", configuration: "myCustomConfig") }

答案 1 :(得分:2)

使用gradle java插件时,'default'配置extendsFrom'runtime','runtimeOnly','implementation'

如果您不使用java插件,那么您可以像这样自己定义

configurations {
    "default"
}

java插件在此处设置默认配置:https://github.com/gradle/gradle/blob/85d30969f4672bb2739550b4de784910a6810b7a/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java#L437

该领域的文档并不是那么好。

答案 2 :(得分:0)

default配置实际上是由base插件创建的,因此您无需自己定义它。

我也遇到了仅从default配置进行合成的复合版本的问题,但我解决的方式略有不同:

plugins {
    id 'base'
}

configurations {
    bootstrap
    it.'default'.extendsFrom bootstrap
}

dependencies {
    bootstrap project(path: ':other', configuration: 'otherConfiguration')
}

这种方法允许:other项目中的工件保留其传递依赖关系,前提是您有兴趣保留它们。