Gradle

最終更新: 2022-01-21 14:04:37 +0800 +0800
原文は英語で書かれています。あなたはAI翻訳版を読んでいます。

Gradle は、JVM プロジェクトやその他多くのエコシステム向けのビルド自動化ツールです。 ビルドロジックは Groovy DSL(.gradle)または Kotlin DSL (.gradle.kts)で記述します。Gradle 自体は JVM 上で動作します。

プロジェクトファイル #

リポジトリのルートにある重要なファイルは次のとおりです。

  • settings.gradle[.kts] はビルドを定義し、サブプロジェクトを含めます。 マルチプロジェクトビルドでは必須であり、ルートプロジェクト名を設定することもできます。
  • build.gradle[.kts] は、ルートプロジェクトまたはサブプロジェクトの プラグイン、依存関係、タスク、規約を定義します。
  • gradle.properties はプロジェクトプロパティを保持します。ユーザー全体に適用する プロパティは ~/.gradle/gradle.properties に配置できます。
  • gradlew、gradlew.bat、gradle/wrapper/ は Gradle Wrapper を構成するため、 コミットする必要があります。
  • .gradle/ はローカルの Gradle 状態であり、無視対象にする必要があります。

settings.gradle.kts で include("service", "web") を使用すると、 サブプロジェクトを登録できます。各サブプロジェクトは独自のビルドスクリプトを持ちながら、 リポジトリ全体の規約を共有できます。

Wrapper を使用する #

CI と通常の開発では、グローバルにインストールした gradle ではなく ./gradlew build を実行します。Wrapper は gradle/wrapper/gradle-wrapper.properties に指定されたバージョンをダウンロードするため、 ビルドを再現可能にできます。 Wrapper のアップグレードをレビューし、利用可能な場合はディストリビューションのチェックサムを 検証してください。

便利なコマンドには次のものがあります。

sh
./gradlew tasks
./gradlew test
./gradlew build
./gradlew clean
./gradlew :service:test

依存関係とタスク #

プラグインは構成とタスクを追加します。たとえば、Java プラグインは implementation、api(java-library 使用時)、compileOnly、runtimeOnly、 およびテスト用の構成を提供します。最も限定的な構成を使用してください。 implementation 依存関係はコンシューマーのコンパイルクラスパスに自動的に含まれませんが、 API 依存関係はその公開契約の一部になります。

Gradle はタスクグラフを実行します。タスクは入力と出力を宣言する必要があります。 これにより、インクリメンタルビルドとビルドキャッシュで安全に作業をスキップできます。 構成フェーズ中に、宣言されていないファイル操作やネットワーク処理を実行することは避け、 遅延プロバイダーとタスクアクションを使用してください。

バージョンカタログ、プラットフォーム、または依存関係制約を使用して、バージョンを一元管理します。 再現性が重要な場合は重要な依存関係のバージョンをロックし、 gradle.properties に認証情報をコミットしないでください。 認証情報は環境変数、安全な CI シークレットストア、または無視対象のローカルファイルから 提供します。

コメント

GitHub で閲覧・コメントする(投稿にはログインが必要です)