Maven の導入と Hello World!

# Maven の導入と Hello World!

## 目的

Maven で Java プログラムをビルド・実行するシンプルな開発環境を構築します。  

## 実現すること

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

## 技術背景

### Maven とは？  

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

### Maven

Maven は、Java プロジェクトをビルドするためのオープンソースのツールです。  

以下は、Maven の主な特徴とメリットです。

#### 特徴

+ プロジェクトの構造と依存関係を XML ファイルに定義し、ビルドプロセスを自動化することができます。  

+ プロジェクトの依存関係を自動的に解決し、必要なライブラリをダウンロードしてビルドに含めることができます。  

+ ビルド時にテストを自動実行することができます。  

##### メリット

+ ビルドプロセスの自動化により、ビルドの一貫性を確保することができます。  

+ 依存関係の解決とライブラリのダウンロードを自動化することにより、開発者が手動でライブラリをダウンロードする必要がなくなります。  

+ 標準的なディレクトリ構造と命名規則を使用するため、他の Maven プロジェクトとの親和性が高くなります。  

+ 様々なプラグインを提供しており、ビルドプロセスに組み込むことができるため、柔軟性があります。  

</details>

## 開発環境

+ Windows 11 Home 22H2 を使用しています。  
+ [WSL](https://learn.microsoft.com/ja-jp/windows/wsl/about) の Ubuntu を操作していきますので macOS の方も参考にして頂けます。  

<details>

WSL (Microsoft Store アプリ版)

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

Ubuntu

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

Java JDK [※ Java JDK の導入と Hello World!](https://qiita.com/hiroxpepe/items/8650664e466906a57996)

```sh
$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu222.04, mixed mode, sharing)
```

</details>

※ この記事では基本的に Ubuntu のターミナルで操作を行います。

## Maven インストール

存在確認

```sh
$ mvn -version
コマンド 'mvn' が見つかりません。次の方法でインストールできます:
※ 以下省略
```

インストール

```sh
$ sudo apt update
$ sudo apt install maven
```

※アンインストールする場合

```
$ sudo apt remove maven
```

バージョン確認

```sh
$ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 11.0.17, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "5.15.79.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"
```

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

## "Hello World" を表示する手順

### プロジェクトフォルダの作成

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

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

### 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!");
    }
}
```

### pom.xml (Maven) ファイルの作成

```sh
$ vim pom.xml
```

ファイルの内容

```xml:pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>hello-maven</artifactId>
    <version>1.0</version>
    <name>hello-maven</name>

    <properties>
        <java.version>11</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
```

ディレクトリ・ファイル構成

```sh
$ tree
.
├── pom.xml
├── src
│   └── main
│       └── java
│           └── com
│               └── example
│                   └── HelloWorld.java
```

### ビルドと実行

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

```sh
$ mvn clean install
```

実行

```sh
$ java -classpath target/hello-maven-1.0.jar com.example.HelloWorld
```

出力

```sh
Hello World!
```

ターミナルに "Hello World!" と表示することが出来ました。

## まとめ

+ Ubuntu に Maven をインストールして、シンプルな Java 開発環境を構築することが出来ました。
+ より実践的な Java WEBアプリ・サービスの作成の手順として、[Spring MVC WEBアプリの Hello World!](https://qiita.com/hiroxpepe/items/8da878169d6bf36a001f)、[Spring MVC REST WEBサービスの Hello World!](https://qiita.com/hiroxpepe/items/6cf3842014b2a6ed8686) 記事に続きます。