【问题标题】:Gradle: What Is The Default Configuration and How Do I Change ItGradle:什么是默认配置以及如何更改它
【发布时间】:2013-11-12 18:19:16
【问题描述】:

当我运行“依赖”任务时,有几个部分:编译、运行时、testCompile ...

其中一个部分是“默认 - 默认工件的配置”。这部分是什么,它的用途是什么?

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

详情: Gradle 1.7

【问题讨论】:

    标签: gradle


    【解决方案1】:

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

    【讨论】:

    • 我仍然想知道您是否可以将默认配置设置为“运行时”以外的其他内容。
    • 我不完全明白。所以运行时 = 默认?
    【解决方案2】:

    使用 gradle java 插件时,'default' 配置 extendsFrom 'runtime', 'runtimeOnly', 'implementation'

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

    configurations {
        "default"
    }
    

    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)
        }
    }
    

    【讨论】:

    • 你有这方面的资料吗?我一直在寻找有关此 default 配置的一些文档,但还没有找到。
    • 添加了配置设置链接。
    • 文档在这方面非常糟糕:(。在复合构建中是如何处理的?
    • 我添加了一个我之前参与过的项目的示例。
    【解决方案3】:

    default 配置实际上是由base 插件创建的,因此您无需自己定义。

    我也遇到过仅从 default 配置进行合成的问题,但我的解决方法略有不同:

    plugins {
        id 'base'
    }
    
    configurations {
        bootstrap
        it.'default'.extendsFrom bootstrap
    }
    
    dependencies {
        bootstrap project(path: ':other', configuration: 'otherConfiguration')
    }
    

    这种方法允许来自 :other 项目的工件保留其传递依赖项,假设您有兴趣保留它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多