Gradle による Java アプリケーションの作り方

Gradle は、主に Java や Groovy, Kotlin, Scala などの言語でよく使われるビルドツール1である。 必要なライブラリーファイル(JAR ファイル)のダウンロードや、 コンパイル、テスト、サーバーへの配置などを自動的に行ってくれる。 また、プラグインで容易に拡張することができる。 ここでは、Gradle で Java アプリケーションを開発する方法を紹介する。 Web アプリケーションの場合の作り方はこちらのページで説明する。

1ビルドツールとは
ソースファイルなどから最終生成目的物を生成するためのツールである。 ソースの依存関係に応じて、必要なコンパイルコマンドなどを呼び出す。 有名なものに Make, Ant, Maven, Gradle などがある。

gradle init

Gradle のビルドの設定は Groovy もしくは Kotlin で記述する。 ここでは Kotlin 版を使用する。

適当なディレクトリー(以下では MyJavaApp という名前だとして説明する)を作成し、 次のコマンドを実行する。(行頭の > はプロンプト)

> gradle init --type java-application --test-framework junit --dsl kotlin

いくつかの質問を聞かれるが、いずれもデフォルトのままでよい。

ディレクトリーの構成

すると MyJavaApp ディレクトリー以下に、次のようなファイルとディレクトリーが自動的に作られているはずである。

.
├── .gradle
├── app
│   ├── build.gradle.kts
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── …
│       │   └── resources
│       │       └── …
│       └── test
│           └── …
│
├── gradle
│   └── …  
├── .gitattributes
├── .gitignore
├── gradlew
├── gradlew.bat
└── settings.gradle.kts

自動的につくられる app ディレクトリーの下の build.gradle.kts を次のように書き換えておく。 少なくとも、利用するライブラリーの指定(implementation(〜))と main メソッドが定義されているクラスの指定(mainClass.set(〜))は変更する必要があるはずである。 今回の例では jsoup というライブラリーを使用するので、imlementation("org.jsoup:jsoup:〜") となる。 ここに何と書くかは、使用するライブラリーのドキュメントを調べる必要がある。クラスの指定(mainClass.set(〜))は、 もちろん自分が用意する main メソッドを提供するクラスの名前にあわせる。

ファイル app/build.gradle.kts

ソースファイルの配置

Gradle では(Maven もだが)ディレクトリーの配置に独特の慣習があり、 Java のソースファイルは appsrc/main/java/ の下(のパッケージに応じたディレクトリー)に 配置する。ここでは、以下のような jsoup(HTML Parser ライブラリー)を利用したプログラムを試してみる。

ファイル app/src/main/java/JsoupSample.java

MyJavaApp ディレクトリーで

> gradle run

というコマンドを実行すると、(最初は JAR ファイルのダウンロードなども行うのでひじょうに時間がかかるかもしれないが) Java プログラムのコンパイルと実行が続けて起こり、実行結果を見ることができる。この例では https://stwww.eng.kagawa-u.ac.jp/Cur/ という Web ページ中で使われている HTML の a タグの情報が表示されるはずである。

なお Windows で Gradle のエラーメッセージが文字化けする場合は、以下のコマンドを gradle コマンドを実行する前に実行しておく。

> chcp 65001

(参考)IDE から開く場合

以上のように作成したディレクトリーは IntelliJ IDEA や Visual Studio Code などの IDE から Gradle プロジェクトとして開くことができる。 あとは、各自でググること。
Koji Kagawa (kagawa.koji@〜)
(〜の部分はSPAM mail予防のため省略します。)