しゃべぶろ

気になった技術の備忘録を残します。

【Gradle】Spring Initializrが作成するbuild.gradle

概要

Gradleとはビルドツールのこと。
ライブラリを管理して、クラスパスに追加したりする事が出来る。
ビルドツールを使わないと、javaコマンドを叩いてクラスパスを追加しないといけない。
同様なプロダクトとして、AntやMavenがある。
大きな違いは、AntとMavenが設定ファイルをxmlで定義するのに対して、
Gradleでは、groovyでスクリプトファイルとして定義する。

groovy

JVM上で動作するスクリプト言語Javaで書かれたライブラリを呼出す事が出来る。
Rubyの影響を強く受けており、RailsならぬGrailsというフレームワークも存在する。
また、Grailsは内部でSpring Frameworkを呼んでいる。

サンプル

Spring Initializrで作成されたbuild.graldeを用いて勉強する。

buildscript {
	ext {
		springBootVersion = '1.5.13.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
	mavenCentral()
}

dependencies {
	compile('org.springframework.boot:spring-boot-starter')
	testCompile('org.springframework.boot:spring-boot-starter-test')
}

buildscriptブロック

ビルドスクリプトが依存している情報をここで定義する。
例えば、Spring Bootを実行するためのタスク「bootRun」は、
spring-boot-gradle-pluginライブラリが提供しており、
このライブラリを読込んでいないと実行する事ができない。
ちなみ、buildscriptはメソッドであり、引数にクロシージャを渡している。

void buildscript(Closure configureClosure)
Configures the build script classpath for this project.

The given closure is executed against this project's ScriptHandler. The ScriptHandler is passed to the closure as the closure's delegate.

Parameters:
configureClosure - the closure to use to configure the build script classpath.

Gradle API 4.7

extブロックは、変数定義に使用する。
repositoriesブロックは、ライブラリのリポジトリを指定する。
dependenciesブロックは、クラスパスに追加するライブラリを指定する。

apply plugin

プラグインを有効にする記述。

apply plugin: 'java' // javaをbuildするために必要。
apply plugin: 'eclipse' // なくても良い?
apply plugin: 'org.springframework.boot' // bootRunタスクを追加してくれる。

groupとversion

プロジェクトの設定を記述する。

sourceCompatibility

プロジェクトが使用するJavaのverを指定する。

compileとtestCompile

プロジェクトの依存関係を指定する。
他にも指定方法があるので纏めてみる。

指定方法 説明
compile プロジェクトのプロダクトコードをコンパイルするのに必要な依存関係
runtime プロダクトのクラスを実行するときに必要になる依存関係
testCompile プロジェクトのテストコードをコンパイルするのに必要な依存関係
testRuntime テストを実行するのに必要な依存関係

runtimeはプロジェクトを実行する時に使用する依存関係を指定する。