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
関連ページ
    概要 Eclipse はフリーの統合開発環境です。v4.4 (Luna) の Windows への導入方法と基本操作についてまとめます。 インストール Eclipse Luna SR2 Packages にアクセスして Eclipse IDE for Eclipse Committers 4.4.x を開きます。右サイドバーの Download Links から使用している OS のものをダ
    概要 Logback は log4j の後継となる Java のロガーです。作者は log4j と同じです。log4j と同様に SLF4J (Simple Logging Facade for Java) というインターフェースを実装しています。JAR ファイルを直接利用する方法と Maven から利用する方法について最も初歩的な例を紹介します。
    概要 sbt は Scala および Java を主な対象としたビルドツールです。Scala Build Tool の略ではありませんが、Simple Build Tool という明示的な記述も公式ドキュメントなどには見当りません。以下 sbt の基本的な使用例をまとめます。使用した sbt のバージョンは 0.13 です。
    正規表現 import java.util.regex.Pattern; import java.util.regex.Matcher; class Main { public static void main(String args[]) { { // 完全一致 Pattern pattern = Pattern.com
    概要 Maven, sbt, cmake, make 等と同様に、ビルドツールとして有名な Gradle の基本的な使い方を、特に Java をビルド対象としてまとめます。2017/05/08 現在、Android における標準のビルドツールです。 参考ドキュメント 環境構築 Installation Creating New Gradle Builds
    概要 Lombok というライブラリを導入すると、Getter/Setter といったよく記述するコードをアノテーションだけで自動生成できます。Google Guava と同様に、Java の冗長なコードを削減する効果があります。簡単な使い方をまとめます。 インストール こちらのページの情報をもとにインストールします。
    概要 Flyway は DB マイグレーションを実現するためのツールです。主に Java を対象としています。Rails におけるマイグレーション機能のようなものです。基本的な使い方をまとめます。 公式ドキュメント Get Started Download Command-line Maven Gradle
    概要 MyBatis は、こちらのページに記載の JDBC を直接利用せずに、XML ファイル等で用意した SQL 文を利用して DB にアクセスするための Java ライブラリです。内部的には JDBC が利用されているため、JDBC のインストールは必要です。同様のライブラリに Hibernate ORM があります。DB は特に MySQL を対象として、MyBatis バージョン 3 の
    概要 Akka 2.4.2 を用いたサンプルコード集です。動作には Java 8 以降が必要です。 Akka requires that you have Java 8 or later installed on your machine. インストール方法は複数提供されています。その一部を記載します。
    概要 HandlerSocket は MySQL プロセス内のスレッドとして動作する、MySQL の NoSQL フロントエンドです。独自のプロトコルを用いて TCP 通信を行います。SQL 構文の解析が不要、プロトコルがシンプルなどの理由によって、単純な DB アクセスが高速に実行可能になります。MariaDB であれば
    概要および事前準備 Scala は JVM 上で動作するバイトコードにコンパイルできる言語です。JAVA よりも柔軟な記述ができます。事前にこちらからダウンロードおよびインストールしておいてください。以下は Maven を利用する前提での記述になっています。以下のようにしてプロジェクトのテンプレートを生成します。
    履歴にタグを付与する (git tag) 一覧表示 タグだけを一覧表示 git tag ログにタグ情報を付与して表示 git log --decorate=full 直近のコミットにタグを付与 コメントあり git tag -a v1.0 -m 'コメント' コメントなし git tag v1.0
    概要 Dataflow は Apache Beam のマネージドサービスです。大規模データの分散処理が可能になります。簡単な使い方を記載します。 Dataflow テンプレートを用いる場合 GCP が提供するデータ処理のテンプレートを利用すると、Apache Beam の使い方を把握していなくても Dataflow を利用できます。