build.gradleを読みとく - Teppei-okitsu/spring-gradle-template GitHub Wiki


plugins {
    id 'org.springframework.boot' version '2.5.4'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'groovy'
    id 'jacoco'
}

//file:noinspection GroovyAssignabilityCheck

no inspection = 「検査しない」だからGroovyの何かしらのチェックをしないって意味なのかも

plugins { id 'hoge'}

pluginsには、gradleコマンドで使用するためのプラグインを用意します。

例えば、gradle complieJava を実行してJavaのソースをコンパイルするためには、上記の javaプラグインが追加されている必要があります。

今回はSpringを使ったプロジェクトなので、公式のリファレンス を参考にし、以下をpluginsに追加する

典型的な Spring Boot プロジェクトでは、groovyjavaプラグインを最低限適用し、依存関係管理のために io.spring.dependency-management: GitHubプラグインを使用します

また、jacocoとあるが、これは カバレッジツール で、命令網羅、分岐網羅を計測し、HTML・XML・CSV出力してくれるツールを入れている。

group = 'com.gradle.example'
version = '1.0.0'

なんであるのかわからん。多分お約束ごと的な部分

sourceCompatibility = '11'

Gradleでビルドに使うJavaのバージョンを指定してる

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

上の意味はわからないが、lombok(アノテーションを使用することによってgetter・setterメソッド等の記述を不要にする便利なライブラリ)を使うために記載してる

repositories {
    mavenCentral()
}

ライブラリを見つけに行くリポジトリを記載する。ここではmavenCentralというリポジトリを指定してる

よく使われるのは[mavenCentral](maven repository)の他にjcenter(閉鎖されちゃうけどね)もある

dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web:2.5.4'
 implementation 'org.springframework.boot:spring-boot-starter-webflux:2.5.4'
 ...
 ...
}

先程の、repositoriesではリポジトリを指定したが、ここでは実際に使用するライブラリを記載する

以下は、implemetationについて、Android Studioの公式から引用

この依存関係コンフィグレーションを api または compile(サポート終了済み)の代わりに使用すると、ビルドシステムで再コンパイルが必要なモジュールの数が削減されるため、ビルド時間が大幅に短縮されます。

続けて、compileOnly

このコンフィグレーションを使用すると、必要ではない一時的な依存関係が含まれなくなるため、最終的な APK(jarとかwar的な) のサイズの縮小に役立ちます。

続けて、runtimeOnly

このコンフィグレーションは、実行時に使用できるようにビルド出力だけに依存関係を追加します。

続けて、annotationProcessor

アノテーション プロセッサのライブラリへの依存関係を追加するには、annotationProcessor コンフィグレーションを使用してアノテーション プロセッサ クラスパスに依存関係を追加する必要があります。これは、このコンフィグレーションを使用すると、コンパイル クラスパスとアノテーション プロセッサ クラスパスが別々になり、ビルドのパフォーマンスが向上するためです。Gradle はコンパイル クラスパスにアノテーション プロセッサがあると、ビルド時間に悪影響を及ぼすコンパイル回避を無効にします