🌏

gradle Build File Basics

に公開

ビルドファイルの基本

gradleのファイルについて公式のリファレンスを読みながら学習をしてみた。

公式のテキストを翻訳して引用しております。

通常、ビルド スクリプト ( build.gradle(.kts))には、ビルド構成、タスク、およびプラグインの詳細が記述されます。
https://docs.gradle.org/current/userguide/build_file_basics.html

すべての Gradle ビルドは、少なくとも 1 つのビルド スクリプトで構成されます。

ビルドスクリプト

ビルド スクリプトは、build.gradleGroovy で記述されたファイルか、build.gradle.ktsKotlin で記述されたファイルのいずれかです。

Gradle スクリプトで受け入れられる言語は、Groovy DSLとKotlin DSLのみです。

マルチプロジェクト ビルドでは、通常、各サブプロジェクトのルート ディレクトリに独自のビルド ファイルが存在します。

ビルド スクリプト内では、通常、次の内容を指定します。

  • プラグイン: コードのコンパイル、テストの実行、成果物のパッケージ化などのタスクのために Gradle の機能を拡張するツール。

  • 依存関係: プロジェクトで使用する外部ライブラリとツール。

具体的には、ビルド スクリプトには主に 2 種類の依存関係が含まれます。

例を見て分解してみましょう。

plugins {   ①
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}
dependencies {  ②
    // Use JUnit Jupiter for testing.
    testImplementation libs.junit.jupiter

    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    // This dependency is used by the application.
    implementation libs.guava
}
application {  ③
    // Define the main class for the application.
    mainClass = 'org.example.App'
}
  1. プラグインを追加します。
  2. 依存関係を追加します。
  3. 規則プロパティを使用します。

1. プラグインを追加する

プラグインは Gradle の機能を拡張し、プロジェクトにタスクを提供できます。

ビルドにプラグインを追加することをプラグインの適用と呼び、追加の機能が利用できるようになります。

plugins {   
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

このapplicationプラグインは、実行可能な JVM アプリケーションの作成を容易にします。

アプリケーションプラグインを適用すると、暗黙的にJavaプラグインも適用されます。このjavaプラグインは、プロジェクトにJavaコンパイル機能、テスト機能、バンドル機能を追加します。

2. 依存関係を追加する

プロジェクトをコンパイル、実行、テストするには外部ライブラリが必要です。

この例では、プロジェクトはテスト用に を使用し、メインのアプリケーション コードでJUnit JupiterGoogle のライブラリを使用します

dependencies {  
    // Use JUnit Jupiter for testing.
    testImplementation libs.junit.jupiter

    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    // This dependency is used by the application.
    implementation libs.guava
}

3. 慣習的なプロパティを使用する

プラグインはプロジェクトにタスクを追加します。また、プロジェクトにプロパティとメソッドも追加します。

プラグapplicationインは、タスクなどのアプリケーションをパッケージ化して配布するタスクを定義しますrun。

アプリケーション プラグインは、コードの実行に必要な Java アプリケーションのメイン クラスを宣言する方法を提供します。

application {   
    // Define the main class for the application.
    mainClass = 'org.example.App'
}

この例では、メイン クラス (つまり、プログラムの実行が開始されるポイント) は ですorg.example.App。

ビルドスクリプトはビルドの設定フェーズで評価され、(サブ)プロジェクトのビルドロジックを定義するためのメインエントリポイントとして機能します。プラグインの適用や規約プロパティの設定に加えて、ビルドスクリプトは以下のことが可能です。

  • 依存関係を宣言する
  • タスクを構成する
  • 共有設定を参照する(バージョンカタログまたはコンベンションプラグインから)

ビルド ファイルのスクリプト作成の詳細については、「ビルド ファイルの作成」を参照してください。

最後に

学習してみた感想。

Gradle スクリプトで受け入れられる言語は、Groovy DSLとKotlin DSLのみです。

昔作ったAndroidアプリだと、Groovyのままだったりするので、build.gradleを使用している。
build.gradle.ktsに移行すると、カッコつけたりと書き方が変わっているのでgradleのドキュメントは読んだ方がいいですね。いつもAndroidのドキュメントだけ眺めていた💦

25分読めばストレスなく読めるドキュメントでした。

Discussion