Maven 3 の基本的な使い方
[履歴] [最終更新] (2017/04/21 00:39:45)

概要および事前準備

Apache Maven は Java 用のプロジェクト管理ツールです。テスト、ビルド、javadoc ドキュメント生成などを汎用的な手順で実行できるようになります。Apache Ant の後継です。バージョン 3 について簡単に使用方法をまとめます。事前にこちらからバイナリをダウンロードおよび解凍しておいてください。解凍結果の bin ディレクトリに PATH を通すことで mvn コマンドが使用できるようになります。

$ mvn --version
Apache Maven 3.3.1
Maven home: c:\Users\username\bin\apache-maven-3.3.1\bin\..
...

なお JAVA SDK が動作のために必要です。Oracle のページから JDK をダウンロードおよびインストールして PATH を通しておく必要があります。また、社内ネットワークなどでプロキシ設定が必要な場合は Maven home 内の apache-maven-3.3.1/conf/settings.xml という設定ファイルを編集します。

参考ページ

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <proxies>
    <proxy>
      <id>myproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
    </proxy>
  </proxies>
  ...
</settings>
  • id: プロキシを複数設定する際にそれらを識別するための ID です。通常は一つですので変更不要です
  • active: この proxy 設定を有効にするためには true のままにしておきます
  • protocol, host, port: ここに必要な社内ネットワーク情報を記載してください
  • username, password: プロキシに認証がかかっている場合はここに記載します。認証がない場合は削除して空文字列にしてください
  • nonProxyHosts: プロキシを利用したくないホスト名のリストを記載します。通常は変更不要です

プロジェクトテンプレートの生成

以下のコマンドでテンプレートを生成します。

$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • artifact: 通常 JAR のことを指します
  • group: artifact の集合体です
  • maven-archetype-quickstart: 通常の JAVA アプリケーション (JAR) 開発用のテンプレートを出力

その際、必要に応じて Central Repository からパッケージが自動でダウンロードされて $HOME/.m2 に保存されます。Central Repository は yum における base レポジトリのようなものです。artifact が管理されています。後述の POM 内の Dependencies に記載する内容が掲載されていたりします。

生成結果ディレクトリ

my-app/
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── mycompany
    │               └── app
    │                   └── App.java
    └── test
        └── java
            └── com
                └── mycompany
                    └── app
                        └── AppTest.java

POM ファイルの編集

Project Object Model を意味する POM はプロジェクトの設定ファイルです。編集する必要がある場合はこちらのリファレンスをご参照ください。

例えば、プロジェクトに含めるリソースファイルの既定の場所 ${basedir}/src/main/resources などを変更するための設定については以下のセクションに記載があります。

JAR ファイルの生成

$ mvn package
$ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
Hello World!

その他便利なサブコマンド

ビルド結果を削除

$ mvn clean

プロジェクトに欠陥がないことを検証

$ mvn validate

javac 相当の処理だけを実行 (コンパイル)

$ mvn compile

テストのみ実行

$ mvn test

プロジェクトの javadoc ドキュメントを生成

$ mvn site

JDK バージョンを指定する

こちらのページに記載されているとおり、プロジェクトで使用する Java のバージョンを maven-compiler-plugin によって pom.xml で指定すれば、ビルド時に必要なバージョンを Maven に伝えることができます。Maven が指定された適切な Java でビルドするためには JAVA_HOME が適切に指定されている必要があります。maven-compiler-plugin に依らず、JAVA_HOME で指定された JDK を用いてビルドされます。一時的に変更することで、複数のバージョンの JDK を同じ PC でプロジェクト毎に使い分けることができます。

Windows の例

set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_131"
echo %JAVA_HOME%

Linux の例

export JAVA_HOME=/path/to/java_home
echo $JAVA_HOME

JAR コマンドで展開して MANIFEST.MF の内容を調べることで、指定した JDK でビルドされたことが確認できます。

jar xvf sample.jar
cat META-INF/MANIFEST.MF