Gradle的配置层次结构如何工作?

时间:2015-09-02 13:28:59

标签: gradle build.gradle

我知道有四种基本配置,compile,runtime,testCompile和testRuntime。如果我放入这样的依赖:

runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'

这意味着此依赖项在运行时编译时可用,对吗?但是testCompile和testRuntime呢?它也适用于这些配置吗?如果我添加自己的配置,是否必须指定它在层次结构中的位置?如果我不这样做会怎么样?文档并没有真正说清楚。

1 个答案:

答案 0 :(得分:10)

这4个配置的定义如下:java插件:

<强>编译 编译项目生产源所需的依赖项。

<强>运行时 生产类在运行时所需的依赖关系。默认情况下,还包括编译时依赖项。

<强> testCompile 编译项目测试源所需的依赖项。默认情况下,还包括已编译的生产类和编译时依赖项。

<强> testRuntime 运行测试所需的依赖项。默认情况下,还包括编译,运行时和测试编译依赖项。

您还可以查看https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations,它有漂亮的图表和表格:

enter image description here

当您声明新配置时,您可以定义它扩展的其他配置,例如 Gradle In Action Geb 为例,您可以将新配置定义为< / p>

configurations {
    functTestCompile.extendsFrom testCompile
    functTestRuntime.extendsFrom testRuntime
}

如果您不这样做,您认为这些配置不需要从另一个配置中获益,您需要定义此配置所需的所有依赖项。