“DSL”在gradle中意味着什么?

时间:2016-07-12 18:39:55

标签: gradle dsl

当我阅读Android NDK文档时,有“DSL”。我不知道究竟是什么意思。你能告诉我“DSL”的全称吗?

文件在这里: http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples

2 个答案:

答案 0 :(得分:21)

简单地说,它代表领域特定语言'。 IMO,在gradle环境中,DSL为您提供了一种特定于gradle的方式来构建您的构建脚本。更确切地说,它是一个基于插件的构建系统,它定义了一种使用各种插件中定义的(主要)构建块来设置构建脚本的方法。

例如,gradle脚本通常依赖于使用闭包作为唯一参数的方法(也称为构建块)。你把它写下来就像这样;

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    ...

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 25

所以在上面,我们想要使用' android {...}' 构建基础(或预定义任务 - 请参见Example.89 here)为我们的构建设置一些Android属性。但我不知道在开始时我可以放入哪些构建块。所以,我需要一种从某个地方查找它们的方法。这就是gradle DSL和插件一起发挥作用的地方。我可以转到那个特定的插件page来弄清楚它中定义了哪种构建块,或者是什么使这个插件变得特别。这些将以称为(gradle)DSL的高级语言的形式定义插件的功能。

了解DSL的工作原理可能需要您了解如何委托'在groovy工作。 This可能会有很多帮助。

您可能想知道的最后一件事是关于如何评估gradle.script。您可以在here上找到一些有用的信息。

答案 1 :(得分:3)

它代表"域特定语言,"可以找到更多信息on Wikipedia