環境
Windows10 64bit
JDK 11
Spring Initializrからひな形をダウンロード
まずは、下記のページからSpringプロジェクトのひな形をダウンロードする。
画像のように、Mavenではなく、Gradleにチェックを入れておく。
ダウンロードして、展開したディレクトリは下記のようになっている。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/04/29 23:48 gradle
d----- 2020/04/29 23:48 src
-a---- 2020/04/29 23:48 341 .gitignore
-a---- 2020/04/29 23:48 509 build.gradle
-a---- 2020/04/29 23:48 5764 gradlew
-a---- 2020/04/29 23:48 3056 gradlew.bat
-a---- 2020/04/29 23:48 469 HELP.md
-a---- 2020/04/29 23:48 26 settings.gradle
Gradle関係のディレクトリ・ファイル
プロジェクト内には、下記のようなGradle関連のファイル・ディレクトリが含まれている。
-
.gradle
... Gradleが生成するキャッシュが保存されているディレクトリ -
gradle
... Gradleラッパーの設定ファイル / Jarファイルが配置されているディレクトリ -
build.gradle
... ビルドスクリプト、大体これを触ることになる -
gradlew
... Gradleラッパーのシェルスクリプト -
gradlew.bat
... Gradleラッパーのバッチファイル -
settings.gradle
... マルチプロジェクト時のビルドに必要な設定ファイル
Gradleラッパー
Spring Initializrを使う場合は、すでにプロジェクトにGradle Wrapperが含まれている。
なので、開発者がGradleそのものを手動でインストールする必要はない。
DLしたプロジェクトをIntellijなどのIDEで開くと、自動で所定のバージョンのGradleがインストールされる。
こうした配布の仕方をすることで、チームで使用されるGradleのバージョンを統一することができる。
IntelliJへの統合
IntelliJのGradleプラグインはデフォルトでインストールされているので、IDEのプラグインの追加は不要。
画面右側にGradleタブがあり、Gradle周りの操作はIntelliJ内で完結させることができる。
下のようにタスク一覧が表示されており、象さんマークのボタンから各タスクを実行することができる。
ビルドスクリプト
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
プラグイン
plugins {
id 'org.springframework.boot' version '2.2.6.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
build.gradle
を見ると、上記のようにプラグインが最初から導入されている。
Gradleのプラグインとは、開発でよく使われるタスクを予め定義してくれている拡張のこと。
例えば、java
プラグインであれば、ビルド、テスト、Javadocの生成などのタスクを予め用意してくれる。
下記のページで様々なプラグインが公開されているが、もちろんプラグインを自作することも可能。
リポジトリ
repositories {
mavenCentral()
}
Gradleはライブラリの依存関係を外部・内部のリポジトリから取得する。
上記では、mavenCentral
を指定しているので、依存関係を追加した場合はここから取得することになる。
他にもjCenter
やgoogle
のリポジトリなどもあるので、そちらを指定することもできる。
リポジトリ間の優先順位を決めておいて、Aにない場合はBから取得という指定の仕方もできる。
Nexus
等を利用し自前で建てたプライベートリポジトリを指定することも可能。
依存関係
デフォルトでは下記のようになっている。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
implementation
はアプリケーションのソースをコンパイルする時に必要な依存関係。
testImplementation
はテストソースをコンパイルし、テスト実行するのに必要な依存関係。
他にも様々なコンフィグレーションの依存関係を設定することができる。
build.gradle
に依存関係を追加すると、IntelliJが変更を検出し、リポジトリから依存関係を取得する。
テスト
test {
useJUnitPlatform()
}
最初は上記のようになっており、テストを実行すると全てのテストが走る状態。
useJUnitPlatform
ブロック内で、JUnitの機能を使用し、テストの細かな制御を行うことができる。
例えば、特定のタグが付けられたテストメソッドをincludeしたり、excludeしたりできる。