Groovyで書けるビルドツールというのが魅力的で使ってみたくなったのでメモ。
##環境##
- OS
- ubuntu 16.04LTS
- Gradle
- Gradle 4.6
- JAVA
- OpenJDK 1.8.0
##準備##
###1.Gradleインストール###
Console
//Gradleが公式レポジトリにあるか確認
$ apt search gradle
//インストールを開始する
$ sudo apt install gradle
//インストールできたか確認
$ gradle
//こんな感じになってればOK
Task :help
Welcome to Gradle 4.6.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
To see more detail about a task, run gradle help --task <task>
For troubleshooting, visit https://help.gradle.org
###2.プロジェクトの作成###
こんな感じのシンプルなプロジェクトを作る。
└── src
└── main
└── java
└── hello
Console
$ mkdir -p src/main/java/hello
javaのプログラムを作る。
src/main/java/hello/HelloWorld.java
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
src/main/java/hello/Greeter.java
package hello;
public class Greeter {
public String sayHello() {
return "Hello world!";
}
}
##Gradleのタスクの実行##
###ビルドファイルの準備###
タスクの実行には build.gradle というファイルを作業ディレクトリに配置して、依存関係などを書きます。このプロジェクトでは joda.time というライブラリが必要です。
以下のように書きます。
build.gradle
apply plugin: 'java'
//以下の2行のように書くことで、Gradleからコードを実行できるようになる。
apply plugin: 'application'
mainClassName = 'hello.HelloWorld'
// MavenCentralというレポジトリから依存関係にあるファイルを取ってくるように設定。
repositories {
mavenCentral()
}
// ビルドされるjarファイルの名前を指定できます。
jar {
baseName = 'gs-gradle'
version = '0.1.0'
}
//依存関係にあるライブラリを列挙します。
dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.12"
}
また、以下のようにどのタイミングで参照されるべきなのかを指定できるみたいです。
compile | testCompile | providedCompile |
---|---|---|
コンパイル時と実行時に必要なライブラリ | テスト時のコンパイルにのみ必要なライブラリ | コンパイル時は必要だが、実行時はコンテナによって提供されるライブラリ |
###実行###
作業ディレクトリに移動し、以下のコマンドを実行します。
Console
$ gradle build
これでjarファイルが作成されたはずです。実行してみましょう!!。
Console
$ gradle run
> Task :run
The current local time is: 22:16:19.473
Hello world!
####ラッパークラスを使う場合####
ラッパークラスをプロジェクトに配置することで、どの環境でも同一のコマンドでビルドが実行できるようになります。
Console
//ラッパークラスを配置する
$ gradle wrapper --gradle-version 4.6
//ビルドする。./を忘れないように。。。
$ ./gradlew build
//実行する。
$ ./gradlew run
##感想##
楽しかった。