22

当我运行“依赖项”任务时,有几个部分:编译、运行时、testCompile ...

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

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

详细信息: Gradle 1.7

4

3 回答 3

28

除非您的构建发布 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") }.

于 2013-11-12T23:11:09.057 回答
5

使用 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

该领域的文档不是很好。

从复合构建中“提供”默认工件的示例。该示例创建了一个引用另一个项目中的依赖项的子项目。在使用复合构建时,这可能是必要的,因为只能依赖“默认”组。

我们使用它从单个项目中获取许多 jar,并在将项目引用为复合构建时将其作为不同的依赖项提供服务。

apply plugin: 'base'

configurations {
    depend
}

dependencies {
    depend project(path: ':', configuration: 'ConfWithArtifact')
}

artifacts {
    "default" (file: configurations.depend.singleFile) {
        builtBy(configurations.depend)
    }
}
于 2017-09-13T11:48:55.083 回答
0

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

我也遇到了仅从配置中进行复合构建的问题default,但我的解决方法略有不同:

plugins {
    id 'base'
}

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

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

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

于 2020-07-18T10:53:35.923 回答