Mavenのインストールと使用方法

toc目次

Mavenとは

Mavenは、Java言語を中心としたプロジェクトのビルド自動化ツールです。

ビルドプロセスの明確化、プロジェクト情報の統一、プロジェクトの依存関係管理といった機能を提供し、開発者がプロジェクトの構築や依存関係の解決に要する時間を大幅に削減できます。

Mavenのインストール方法

Javaのインストール

Java Development Kit (JDK)がインストールされていない場合、JDKをダウンロードしてインストールします。

インストール後、環境変数JAVA_HOMEを設定し、JDKがインストールされているディレクトリを指定します。

Mavenのインストール

Apache Mavenの公式ウェブサイトからBinary zipファイルをダウンロードします。

ダウンロードしたzipファイルを解凍し、任意のディレクトリ(例:C:\Program Files\Maven)に配置します。

環境変数の設定

システムの環境変数に、M2_HOMEMAVEN_HOMEを設定し、それぞれにMavenをインストールしたディレクトリのパス(例:C:\Program Files\Maven\apache-maven-x.x.x)を設定します。

環境変数のPathに、Mavenのbinディレクトリのパス(例:C:\Program Files\Maven\apache-maven-x.x.x\bin)を追加します。

Mavenのインストール確認

コマンドプロンプトで「mvn -v」を実行しバージョンが表示されることを確認します。

> mvn -v
Apache Maven X.X.X
Maven home: C:\Program Files\Maven\apache-maven-x.x.x\
Java version: X.X.X
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Mavenの使用方法

プロジェクトの作成

mvn archetype:generateでプロジェクトのテンプレートを作成できます。

そのまま実行すると件数が多いため、オプションで「maven-archetype-quickstart」を指定して実行します。

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4

コマンドの途中でgroupIdartifactIdの入力が求められるので任意のIDを設定します。

> mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
...
Define value for property 'groupId': com.example      # グループIDを入力
Define value for property 'artifactId': sample        # アーティファクトIDを入力
Define value for property 'version' 1.0-SNAPSHOT: :   # そのままEnter(デフォルト値)
Define value for property 'package' com.example: :    # そのままEnter(デフォルト値)
Confirm properties configuration:
groupId: com.example
artifactId: sample
version: 1.0-SNAPSHOT
package: com.example
 Y: : # Enter

コマンド実行後、以下のファイルが作成されます。

sample
 ├─pom.xml
 └─src
     ├─main
     │  └─java
     │      └─com
     │          └─example
     │              └─App.java
     └─test
         └─java
             └─com
                 └─example
                        └─AppTest.java

pom.xmlmaven.compiler.sourcemaven.compiler.targetにJava7(1.7)が指定されているため、異なるバージョンを使用している場合は変更します。

<?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>sample</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>sample</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
package com.example;

/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
    }
}
package com.example;

import static org.junit.Assert.assertTrue;

import org.junit.Test;

/**
 * Unit test for simple App.
 */
public class AppTest
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
}

プロジェクトのビルド

プロジェクトのルートフォルダーでmvn packageを実行します。

# プロジェクトのルートフォルダーに移動
cd sample

# ビルド
mvn package

プロジェクトの実行

targetフォルダー以下にJARファイルが作成されるのでjavaコマンドで実行します。

> java -cp target/sample-1.0-SNAPSHOT.jar com.example.App
Hello World!

Mavenの主なコマンド

Mavenの主なコマンドは以下のとおりです。

コマンド 内容
mvn validate プロジェクトに必要な情報がすべて揃っているか確認
mvn compile プロジェクトのソースコードをコンパイル
mvn test ユニットテストを実施
mvn package JARファイルを作成
mvn integration-test 統合テストを実行できる環境にデプロイ
mvn verify パッケージが有効か確認
mvn install パッケージをローカルリポジトリにインストール
mvn deploy パッケージをリモートリポジトリにコピー
mvn clean クリーンアップ
mvn site サイトドキュメントを作成

参考