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



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

其中一个部分是"默认 - 默认项目的配置"。这部分是什么,它的用途是什么?

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

细节:格拉德尔 1.7

除非生成是发布 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 插件时,"默认"配置从"运行时"、"运行时仅"、"实现"扩展

如果您不使用 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)
    }
}

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

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

plugins {
    id 'base'
}
configurations {
    bootstrap
    it.'default'.extendsFrom bootstrap
}
dependencies {
    bootstrap project(path: ':other', configuration: 'otherConfiguration')
}

此方法允许 :other 项目中的项目保留其传递依赖项,前提是你有兴趣保留它们。

最新更新