【问题标题】:What does "DSL" mean in gradle?“DSL”在gradle中是什么意思?
【发布时间】:2016-07-12 18:39:55
【问题描述】:

当我阅读 Android NDK 文档时,有“DSL”。我不知道具体是什么意思。请告诉我“DSL”的全名好吗?

在此处记录: http://tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples

【问题讨论】:

标签: gradle dsl


【解决方案1】:

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

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

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    ...

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 25

所以在上面,我们想使用 'android{ ...}' building block(或预定义的task - 请参阅 Example.89 @987654321 @) 为我们的构建设置一些 android 属性。但我不知道一开始我可以在里面放哪些积木。所以,我需要一种从某个地方查找这些内容的方法。这就是 gradle DSL 和插件一起发挥作用的地方。我可以去那个特定插件的page 找出其中定义了什么样的构建块,或者是什么让这个插件变得特别。这些将以称为(gradle)DSL 的高级语言的形式定义插件的功能。

了解 DSL 的工作方式可能需要您了解“委托”在 groovy 中的工作方式。 This 可能会有很大帮助。

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

【讨论】:

    【解决方案2】:

    它代表“域特定语言”,更多信息可以在on Wikipedia找到。

    【讨论】:

      【解决方案3】:

      Gradle 是一种构建工具,而不是一种语言。 但是在android中我们使用android gradle插件来获取语法,api用于在android中使用gradle。

      例如

      signingConfigs {
                  debug {
                      keyAlias 'cooldude69'
                      keyPassword 'cooldude69'
                  }
              }
      

      这里的 signingConfig 是 build.gradle 文件的一部分,它帮助 Gradle 构建工具指定此构建是具有某些 keyAlias 等的调试构建。

      所以这些构建块、API 等是在 android 中使用 Gradle 的格式,因此称为 Gradle DSL(领域特定语言)。 也可以通俗的说使用Gradle构建工具是一种Gradle语言(基于groovy语言)。

      参考->

      https://developer.android.com/reference/tools/gradle-api/4.2/classes

      https://developer.android.com/studio/build/gradle-tips#groovy

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-02
        • 1970-01-01
        • 2016-03-17
        • 2011-08-12
        • 2017-06-11
        • 2018-03-05
        • 2023-03-27
        • 2014-12-02
        相关资源
        最近更新 更多