【发布时间】:2013-11-12 18:19:16
【问题描述】:
当我运行“依赖”任务时,有几个部分:编译、运行时、testCompile ...
其中一个部分是“默认 - 默认工件的配置”。这部分是什么,它的用途是什么?
如何更改“默认配置”中的内容?
详情: Gradle 1.7
【问题讨论】:
标签: gradle
当我运行“依赖”任务时,有几个部分:编译、运行时、testCompile ...
其中一个部分是“默认 - 默认工件的配置”。这部分是什么,它的用途是什么?
如何更改“默认配置”中的内容?
详情: Gradle 1.7
【问题讨论】:
标签: gradle
除非您的构建发布 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") }。
【讨论】:
使用 gradle java 插件时,'default' 配置 extendsFrom 'runtime', 'runtimeOnly', 'implementation'
如果你不使用java插件,那么你可以像这样自己定义它
configurations {
"default"
}
这方面的文档不是很好。
从复合构建中“提供”默认工件的示例。 该示例创建了一个引用另一个项目中的依赖项的子项目。在使用复合构建时,这可能是必要的,因为只能依赖“默认”组。
我们使用它从单个项目中获取多个 jar,并在将项目作为复合构建引用时将其作为不同的依赖项。
apply plugin: 'base'
configurations {
depend
}
dependencies {
depend project(path: ':', configuration: 'ConfWithArtifact')
}
artifacts {
"default" (file: configurations.depend.singleFile) {
builtBy(configurations.depend)
}
}
【讨论】:
default 配置的一些文档,但还没有找到。
default 配置实际上是由base 插件创建的,因此您无需自己定义。
我也遇到过仅从 default 配置进行合成的问题,但我的解决方法略有不同:
plugins {
id 'base'
}
configurations {
bootstrap
it.'default'.extendsFrom bootstrap
}
dependencies {
bootstrap project(path: ':other', configuration: 'otherConfiguration')
}
这种方法允许来自 :other 项目的工件保留其传递依赖项,假设您有兴趣保留它们。
【讨论】: