Gradle 的配置层次结构如何工作?
How does Gradle's configurations hierarchy work?
我知道有四种基本配置,compile,runtime,testCompile,testRuntime。如果我加入这样的依赖项:
runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'
这意味着此依赖项在运行时 和 编译下可用,对吗?但是 testCompile 和 testRuntime 呢?它也适用于这些配置吗?如果我添加自己的配置,是否必须指定它在层次结构中的位置?如果我不这样做会怎样?文档并没有真正说明这一点。
java 插件的这 4 个配置的定义如下:
编译
编译项目生产源码所需的依赖
运行时间
生产 类 在 运行 时所需的依赖项。默认情况下,还包括编译时依赖项。
测试编译
编译项目测试源码所需的依赖。默认情况下,还包括已编译的产品 类 和编译时依赖项。
测试运行时间
运行 测试所需的依赖项。默认情况下,还包括编译、运行时间和测试编译依赖项。
你也可以查看 https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations,它有漂亮的图表和 table:
当您声明一个新配置时,您可以定义它扩展的其他配置,例如 Gradle In Action 以 Geb[ 为例=41=],您可以将新配置定义为
configurations {
functTestCompile.extendsFrom testCompile
functTestRuntime.extendsFrom testRuntime
}
如果你不这样做,你假设这些配置不需要从另一个和它的独立中获益,你将需要定义这个配置需要的所有依赖项。
我知道有四种基本配置,compile,runtime,testCompile,testRuntime。如果我加入这样的依赖项:
runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'
这意味着此依赖项在运行时 和 编译下可用,对吗?但是 testCompile 和 testRuntime 呢?它也适用于这些配置吗?如果我添加自己的配置,是否必须指定它在层次结构中的位置?如果我不这样做会怎样?文档并没有真正说明这一点。
java 插件的这 4 个配置的定义如下:
编译 编译项目生产源码所需的依赖
运行时间 生产 类 在 运行 时所需的依赖项。默认情况下,还包括编译时依赖项。
测试编译 编译项目测试源码所需的依赖。默认情况下,还包括已编译的产品 类 和编译时依赖项。
测试运行时间 运行 测试所需的依赖项。默认情况下,还包括编译、运行时间和测试编译依赖项。
你也可以查看 https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations,它有漂亮的图表和 table:
当您声明一个新配置时,您可以定义它扩展的其他配置,例如 Gradle In Action 以 Geb[ 为例=41=],您可以将新配置定义为
configurations {
functTestCompile.extendsFrom testCompile
functTestRuntime.extendsFrom testRuntime
}
如果你不这样做,你假设这些配置不需要从另一个和它的独立中获益,你将需要定义这个配置需要的所有依赖项。