我知道有四种基本配置,compile,runtime,testCompile和testRuntime。如果我放入这样的依赖:
runtime group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'
这意味着此依赖项在运行时和编译时可用,对吗?但是testCompile和testRuntime呢?它也适用于这些配置吗?如果我添加自己的配置,是否必须指定它在层次结构中的位置?如果我不这样做会怎么样?文档并没有真正说清楚。
答案 0 :(得分:10)
这4个配置的定义如下:java插件:
<强>编译强> 编译项目生产源所需的依赖项。
<强>运行时强> 生产类在运行时所需的依赖关系。默认情况下,还包括编译时依赖项。
<强> testCompile 强> 编译项目测试源所需的依赖项。默认情况下,还包括已编译的生产类和编译时依赖项。
<强> testRuntime 强> 运行测试所需的依赖项。默认情况下,还包括编译,运行时和测试编译依赖项。
您还可以查看https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations,它有漂亮的图表和表格:
当您声明新配置时,您可以定义它扩展的其他配置,例如 Gradle In Action 以 Geb 为例,您可以将新配置定义为< / p>
configurations {
functTestCompile.extendsFrom testCompile
functTestRuntime.extendsFrom testRuntime
}
如果您不这样做,您认为这些配置不需要从另一个配置中获益,您需要定义此配置所需的所有依赖项。