【问题标题】:How does Gradle's configurations hierarchy work?Gradle 的配置层次结构如何工作?
【发布时间】:2015-11-28 01:05:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

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

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

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

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

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

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

    当您声明一个新配置时,您可以定义它扩展的其他配置,例如 Gradle In ActionGeb 为例,您可以将新配置定义为

    configurations {
        functTestCompile.extendsFrom testCompile
        functTestRuntime.extendsFrom testRuntime
    }
    

    如果您不这样做,您假设这些配置不需要从另一个配置及其独立配置中受益,您将需要定义此配置所需的所有依赖项。

    【讨论】:

    • 很好的答案!有没有办法用命令探索配置三? (即不必依赖每个插件的文档)。例如命令gradle dependencies 显示所有配置的所有依赖关系分解,但不显示配置如何相互扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多