web-dev-qa-db-ja.com

Gradleで「DSL」とはどういう意味ですか?

Android NDKドキュメントを読んでいますが、 "DSL"があります。正確には何なのかわかりません。 "DSL"のフルネームを教えていただけますか?

ここにドキュメント: http://tools.Android.com/tech-docs/new-build-system/gradle-experimental#TOC-Samples

16
최완규

単に、それは「ドメイン固有言語」の略です。 IMOは、gradleのコンテキストでは、gradle固有の方法でビルドスクリプトを作成できます。より正確には、これはプラグインベースのビルドシステムであり、(主に)ビルディングブロックを使用してビルドスクリプトをセットアップする方法を定義しますプラグインで定義されます。

たとえば、gradleスクリプトは通常、唯一のパラメーターとしてクロージャーを使用するメソッド(ビルディングブロックとも呼ばれます)を使用することに依存しています。そして、あなたはそれをこのように書き留めます。

apply plugin: 'com.Android.library'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    ...

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 25

したがって、上記では「Android {...}」を使用したいと考えていましたビルディングブロック(または事前定義されたtask-例を参照してください89 ここに )いくつかのAndroid=私たちのビルドのプロパティを設定します。しかし、最初にどのビルディングブロックをそこに入れることができるのか分かりません。それで、私はどこかからそれらを検索する方法です。ここで、gradle DSLとプラグインが連携します。その特定のプラグインの ページ に移動して、定義されているビルディングブロックの種類を確認できますプラグインの機能を定義するものは、(gradle)DSLと呼ばれる高水準言語の形でプラグインの機能を定義するものです。

DSLがどのように機能するかを理解するには、「デリゲート」がGroovyでどのように機能するかを知る必要があります。 これ はかなり役に立ちます。

最後に1つ気になるのは、gradle.scriptがどのように評価されるかです。 こちら で役立つ情報を見つけることができます。

27
stdout

それは「ドメイン固有言語」の略で、詳細は Wikipediaで にあります。

3