前から気になっていたMavenの使い勝手を試そうと、まずはMacにインストールしてHello Worldを表示してみました。
- Apache Mavenとは
- Apache Mavenのインストール
- 事前準備
- インストール
- Hello World
Apache Mavenとは
Apache Mavenとは、Javaソースコードをビルドするためのオープンソースソフトウェア(OSS)です。
ソースコードのコンパイルやユニットテストに加え、アーティファクト(WAR, EARなど)の生成が可能です。
Apache Mavenのインストール
事前準備
Apache Mavenのインストールを始める前に、以下の準備を行います。
- Apache Mavenのダウンロード
- JAVA_HOMEの設定
Apache Mavenのダウンロード
公式サイトから、Apache Mavenのモジュールをダウンロードします。本記事では、「Binary tar.gz archive」を選択します。

JAVA_HOMEの設定
インストールするには、JAVA_HOMEの設定が必要です。以下のように設定済みです。
$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home
インストール
ファイルの解凍
以下のコマンドでファイルを解凍します。
$ tar xzvf apache-maven-3.6.3-bin.tar
解凍後に作成されるディレクトリを/opt配下に移動します。
$ sudo mv apache-maven-3.6.3 /opt/
環境パスへの追加
コマンド実行できるように、以下のコマンドでPATH
環境変数に/opt/apache-maven-3.6.3/bin
を追加します。
$ export PATH=/opt/apache-maven-3.6.3/bin:$PATH
mvnコマンドが実行できることを確認します。
$ mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /opt/apache-maven-3.6.3 Java version: 1.8.0_77, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre Default locale: ja_JP, platform encoding: UTF-8 OS name: "mac os x", version: "10.15.5", arch: "x86_64", family: "mac"
Hello World
Apache Mavenを使って、Javaプログラムのコンパイルを試します。
ソースコードの作成
以下のコマンドでJavaプログラムの雛形を作成します。
$ mkdir hello-world $ cd hello-world/ $ mvn archetype:generate \ -DgroupId=com.example \ -DartifactId=hello-world
途中で質問されますが、全てEnterでデフォルトを選択すると、以下のようにBUILD SUCCESS
が表示されます。
[INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.example [INFO] Parameter: artifactId, Value: hello-world [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.example [INFO] Parameter: packageInPathFormat, Value: com/example [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.example [INFO] Parameter: groupId, Value: com.example [INFO] Parameter: artifactId, Value: hello-world [INFO] Project created from Archetype in dir: /Users/XXX/Downloads/hello-world/hello-world [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 36.709 s [INFO] Finished at: 2020-09-28T00:53:14+09:00 [INFO] ------------------------------------------------------------------------
以下のコマンドで確認すると、ディレクトリ構造が作成されていることがわかります。
$ tree . └── hello-world ├── pom.xml └── src ├── main │ └── java │ └── com │ └── example │ └── App.java └── test └── java └── com └── example └── AppTest.java 10 directories, 3 files
App.javaを確認すると、デフォルトでHello Worldプログラムのソースコードであることがわかります。今回はこのまま使用します。
$ cat hello-world/src/main/java/com/example/App.java package com.example; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
Jarファイルを作成する
作成したソースコードをJarファイルに圧縮します。
$ cd hello-world/ $ mvn package [INFO] Scanning for projects... [INFO] [INFO] ----------------------< com.example:hello-world >----------------------- [INFO] Building hello-world 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- 〜〜省略〜〜 [INFO] Building jar: /Users/XXX/Downloads/hello-world/hello-world/target/hello-world-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.662 s [INFO] Finished at: 2020-09-28T01:07:29+09:00 [INFO] ------------------------------------------------------------------------
targetディレクトリ配下にJarファイルが作成されていることがわかります。
$ tree . ├── pom.xml ├── src │ ├── main │ │ └── java │ │ └── com │ │ └── example │ │ └── App.java │ └── test │ └── java │ └── com │ └── example │ └── AppTest.java └── target ├── classes │ └── com │ └── example │ └── App.class ├── generated-sources │ └── annotations ├── generated-test-sources │ └── test-annotations ├── hello-world-1.0-SNAPSHOT.jar ├── maven-archiver │ └── pom.properties ├── maven-status │ └── maven-compiler-plugin │ ├── compile │ │ └── default-compile │ │ ├── createdFiles.lst │ │ └── inputFiles.lst │ └── testCompile │ └── default-testCompile │ ├── createdFiles.lst │ └── inputFiles.lst ├── surefire-reports │ ├── TEST-com.example.AppTest.xml │ └── com.example.AppTest.txt └── test-classes └── com └── example └── AppTest.class 28 directories, 13 files
実行する
作成したJarファイルを使って、Hello Worldプログラムを実行します。
$ java -cp target/hello-world-1.0-SNAPSHOT.jar com.example.App Hello World!
以上です。とりあえず要領が分かったので、これから色々と使ってみたいと思います。