"DSL"在gradle中意味着什么?

최완규*_*최완규 14 dsl gradle

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

文档:http: //tools.android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples

std*_*out 24

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

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

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    ...

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 25
Run Code Online (Sandbox Code Playgroud)

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

了解DSL的工作原理可能需要您了解"委托"如何在groovy中工作.可能会有很大帮助.

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


Bra*_*zie 5

它代表“领域特定语言”,更多信息可以在维基百科上找到。