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

Mik*_*der 17 gradle

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

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

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

细节: Gradle 1.7

Pet*_*ser 24

除非您的构建是发布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/ artifactsblock).或者,B可以声明自定义配置,A可以通过显式命名该配置来依赖于该配置(例如dependencies { compile project(path: ":B", configuration: "myCustomConfig") },

  • 我仍然想知道你是否可以将默认配置设置为"运行时"之外的其他配置. (2认同)

Jes*_*per 5

使用 gradle java 插件时,“默认”配置 extendsFrom 'runtime', 'runtimeOnly', 'implementation'

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

configurations {
    "default"
}
Run Code Online (Sandbox Code Playgroud)

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)
    }
}
Run Code Online (Sandbox Code Playgroud)