Gradle を Ubuntu にインストールして Hello World する

# Gradle を Ubuntu にインストールして Hello World する

こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu 22.04 に Gradle をインストールする手順と、Hello World を出力する方法を紹介します。
![gradle_on_ubuntu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/3c28274d-6a8f-f489-5b3d-defa6a770283.png)

## 目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

https://qiita.com/studio_meowtoon/items/6119ab05d8b13527efd8

## 実現すること

ローカル環境 (Ubuntu) に Java のプログラムをビルド、実行するツール [Gradle](https://gradle.org/) をインストールします。  

:::note alert
**Gradle** を **Ubuntu** に **PPA** を使用してインストールする方法は**一般的ではありません**。この記事では学習のために手順を紹介しています。ご注意ください。(※Ubuntu 24.04 ではこの方法は有効ではありません)
:::

:::note alert
:::

## 技術トピック

### Gradle とは？  

<details>
<summary>こちらを展開してご覧いただけます。</summary>

### [Gradle (グレイドル)](https://gradle.org/)

:::note info
Gradle は、ビルド自動化ツールであり、Java や Kotlin などのプログラミング言語で書かれたプロジェクトを構築するために使用されます。

|特徴|
|:--|
|Gradle は、スクリプトに基づいたビルドシステムであり、高速で柔軟性があり、複雑なビルドタスクを実行することができます。 |
|Gradle は、ビルドの構成、依存関係管理、テストの実行、アプリケーションのデプロイなど、様々な機能を提供します。|

:::

</details>

## 開発環境

+ Windows 11 Home 22H2 を使用しています。  

:::note info
[WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方も参考にして頂けます。  
:::

<details>

WSL (Microsoft Store アプリ版) [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/2aaa6579cb8e4fa1d874)

```sh
> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
```

Ubuntu [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/2aaa6579cb8e4fa1d874)

```sh
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
```

Java JDK [※ こちらの関連記事からインストール方法をご確認いただけます](https://qiita.com/studio_meowtoon/items/4d11e94a2389758759cd)

```sh
$ java -version
openjdk version "11.0.18" 2023-01-17
OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
```

</details>

:::note warn
この記事では基本的に Ubuntu のターミナルで操作を行います。**Vim を使用してコピペする方法**を初めて学ぶ人のために、以下の記事で手順を紹介しています。ぜひ挑戦してみてください。
:::

https://qiita.com/studio_meowtoon/items/7771ad48676926e41463

## Gradle インストール

**cwchien/gradle** パッケージリポジトリを追加します。

```sh
$ sudo add-apt-repository ppa:cwchien/gradle
```

インストールします。  

```sh
$ sudo apt update
$ sudo apt install gradle
```

:::note warn
以下は、アンインストールする場合のコマンドです。  
:::

```sh
$ sudo apt remove gradle
$ sudo apt purge gradle
```

バージョンを確認します。  

```sh
$ gradle -version
------------------------------------------------------------
Gradle 7.4.2
------------------------------------------------------------
Build time:   2022-03-31 15:25:29 UTC
Revision:     540473b8118064efcc264694cbcaa4b677f61041
Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.18 (Amazon.com Inc. 11.0.18+10-LTS)
OS:           Linux 5.15.90.1-microsoft-standard-WSL2 amd64
```

Gradle を Ubuntu にインストールすることが出来ました。  

:::note info
JDK をインストールする際に、**JAVA_HOME** 環境変数を設定しています。Gradle はこの環境変数を参照して JDK のパスを自動的に認識することができます。
:::

## Hello World を表示する手順

### プロジェクトの作成

プロジェクトフォルダを作成します。  
※ ~/tmp/hello-gradle をプロジェクトフォルダとします。  

```sh
$ mkdir -p ~/tmp/hello-gradle
$ cd ~/tmp/hello-gradle
```

Java ソースファイルを作成します。  

```sh
$ mkdir -p src/main/java/com/example
$ vim src/main/java/com/example/HelloWorld.java
```

ファイルの内容  
※ パッケージを "com.example" としています。  

```java:HelloWorld.java
package com.example;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
```

build.gradle ファイルを作成します。  

```sh
$ vim build.gradle
```

ファイルの内容

```xml:build.gradle
plugins {
    id 'java'
}

group 'com.example'
version '1.0'

sourceCompatibility = 11

repositories {
    mavenCentral()
}

dependencies {
}

jar {
    manifest {
        attributes 'Main-Class': 'com.example.HelloWorld'
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
```
:::note info
**build.gradle** は、Java プロジェクトを Gradle でビルドする際に必要な依存関係や設定情報などを記述する Groovy DSL 形式のファイルです。
:::

:::note info
上記の **build.gradle jar** ブロックは、実行可能な jar ファイルを生成するために必要な設定を追加しています。

|内容|
|:--|
|attributes セクションでは、実行可能な jar ファイルを起動するためにメインクラスを指定しています。|
|from セクションでは、configurations.runtimeClasspath に含まれるすべての jar ファイルを zipTree メソッドを使用して展開し、実行可能な jar ファイルに含めます。|

これにより、必要なクラスファイルが含まれるようになります。
:::

プロジェクトのファイル構成を表示します。  

```sh
$ tree
.
├── build.gradle
└── src
    └── main
        └── java
            └── com
                └── example
                    └── HelloWorld.java
```

### プロジェクトのビルドと実行

ビルドします。  
※ build/libs/hello-maven-1.0.jar ファイルが作成されます。

```sh
$ gradle clean build
```
:::note info
Gradle を使用して Java プロジェクトをビルドするためのコマンドです。

|タスク|内容|
|:--|:--|
|clean|ビルド前に前回のビルドで生成されたファイルを削除します。|
|build|プロジェクトのソースコードからコンパイルされたクラスファイルを含む jar ファイルが作成されます。|
 
この jar ファイルには、依存関係のライブラリやリソースファイルも含まれます。ビルドされた jar ファイルは、**build/libs** ディレクトリ内に生成されます。
:::

実行します。  

```sh
$ java -jar build/libs/hello-gradle-1.0.jar
```

出力を確認します。  

```sh
Hello World!
```

:::note info
ここまでの手順で、Gradle で Java ソースコードをビルド、実行し、ターミナルに **Hello World!** と表示することができました。  
:::

## まとめ

Ubuntu に Gradle をインストールして、シンプルな Java 開発環境を構築することが出来ました。

:::note warn
実際の開発では、軽量なテキストエディタである **VS Code** や、**IDE (統合開発環境)** を使用して Java プログラムを開発することが一般的です。しかし、それらの開発ツールのバックエンドには、通常 **Gradle** (または **Maven**) が使われます。Gradle を直接コマンドラインから使用することで、Java プロジェクト開発の基本を理解することができます。
:::

どうでしたか？ Window 11 の WSL Ubuntu に、Gradle を使用した Java の開発環境を手軽に構築することができます。ぜひお試しください。今後も Java の開発環境などを紹介していきますので、ぜひお楽しみにしてください。

## 推奨コンテンツ

https://qiita.com/studio_meowtoon/items/37ac0082a3228e4de570