LoginSignup
6
5

More than 3 years have passed since last update.

Gradleの基礎知識

Last updated at Posted at 2021-06-20

バージョン

Windows:10
Gradle:7.1

Gradleのリリースノートはこちら

ディレクトリ構成

ソースプロジェクトにおけるGradleの設定ファイルたちは、こんな構成で配置する。

├─ src                                     ・・・ソースコードディレクトリ
├─ gradle
│    └─ wrapper                            ・・・Gradle Wrapperの設定ディレクトリ
│         ├─ gradle-wrapper.jar            ・・・Gradle WrapperのJarファイル
│         └─ gradle-wrapper.properties     ・・・Gradle Wrapperの設定ファイル
├─ build.gradle                            ・・・ビルドの定義ファイル
├─ gradlew                                 ・・・Gradle Wrapper実行用スクリプト(UNIX用)
├─ gradlew.bat                             ・・・Gradle Wrapper実行用スクリプト(Windows用)
└─ settings.gradle                         ・・・Gradleの設定ファイル

Gradle Wrapper

Gradleは特定のバージョンをインストールして使用することもできるが、公式のガイドにもある通りGradle Wrapperを使用するとインストール不要で簡単にバージョンの変更ができるためオススメ。

バージョンの設定

gradle-wrapper.properties に定義する distributionUrl に、使用したいGradleのバージョンを指定する。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip

Gradlew Wrapperの実行

以下のコマンドで実行できる。

  • Windows
 ./gradlew.bat {タスク}
  • UNIX
 ./gradlew {タスク}

Gradleタスク

Gradleでは、デフォルトで用意されているタスクがある。
その中で、よく使用するものを挙げてみる。

タスク名 用途 実行例
build ソースコードのビルドを行う。
testタスクを内包しているため、デフォルトではtestタスクまで実行するが、-x testを付けて実行するとテストを行わない。
また、--refresh-dependenciesを付けて実行すると、依存関係にあるライブラリをビルド時に取得し直す。
./gradlew.bat build
./gradlew.bat build -x test
./gradlew.bat build --refresh-dependencies
test ソースコードのテストを行う。
buildタスクに内包されているため、buildタスクを実行すると、自動的にtestタスクも実行される。
./gradlew.bat test
bootRun SpringBootのアプリケーションを起動する。 ./gradlew.bat :{ソースプロジェクト名}:bootRun
clean buildタスクによって生成されたbuildディレクトリとその配下を削除する。 ./gradlew.bat clean

これらの他にも多くのタスクが存在する。
また、後述するbuild.gradleに独自のタスクを定義して実行することもできる。

build.gradle

ビルドの定義を記載する。
Groovyのスクリプト形式。
ここでは、よく使用する設定を挙げる。

pluginsブロック

Gradle単体ではビルドに必要な機能をほとんど備えていない。
そのため、必要な機能をPluginsブロックに定義して補う必要がある。
詳細は、公式のガイドを参照。

マルチプロジェクト

マルチプロジェクト構成では、親プロジェクトと子プロジェクトのそれぞれにbuild.gradleを配置する。
ここでは、マルチプロジェクト構成に関係するbuild.gradleの設定項目について挙げる。

親プロジェクトのbuild.gradle

allprojectsブロック

親プロジェクトに配置するbuild.gradleに記載する。
ソースプロジェクト全体の共通的な設定を記載するブロック。

subprojectsブロック

親プロジェクトに配置するbuild.gradleに記載する。
子プロジェクトに反映する設定を記載するブロック。

子プロジェクトのbuild.gradle

dependenciesブロック

ライブラリとの依存関係を定義する。
よく使用するメソッドの種類と違いは以下。

メソッド名 特徴 備考
compileOnly コンパイルクラスパスのみに依存関係を追加する。 非推奨とされている。
runtimeOnly 実行時に使用できるように、ビルド出力だけに依存関係を追加する。 非推奨とされている。
api 依存関係をコンパイルクラスパスとビルド出力に追加します。
依存関係が伝播する。
-
implementation 依存関係をコンパイルクラスパスに追加し、依存関係をビルド出力にパッケージ化する。
依存関係が伝播しない。
-
testImplementation テスト実行時のみ、依存関係をコンパイルクラスパスに追加する。 -

詳細は公式のガイドを参照。

settings.gradle

ビルドの対象とするソースプロジェクト名や、ライブラリ取得元リポジトリの情報を記載する。

  • pluginManagement
    ビルド時に外部ライブラリを取得する際に使用する。
    ライブラリ取得元のリポジトリ情報を定義する。

  • rootProject.name
    大元となるソースプロジェクト名を定義する。
    マルチプロジェクト構成では親プロジェクト名。

  • include
    マルチプロジェクト構成になっている場合に、ビルドの対象に含める子プロジェクト名を定義する。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5