Apache Mavenについてどのくらい理解しているでしょうか。

この記事では、Java開発の現場で多くの人が使用しているビルドツール・Apache Mavenについて初心者向けに解説します。

入門的な内容となっているため、難しい内容は記載していません。

「Apache Mavenを学ぶのは初めて」という人も安心してお読みください。

この記事では以下の情報を得ることができます。

  • Apache Mavenの概要
  • Apache Mavenができること
  • Apache Mavenのメリット
  • Apache MavenとGradleの比較
  • Apache Mavenの導入について
  • Apache Mavenの使い方

それでは、早速ご覧ください。

Apache Mavenについて


この項目では、Apache Mavenの基本情報について紹介します。

Apache MavenはJava用のプロジェクト管理ツール(ビルドツール)です。


名称

アパッチ メイヴン(メイヴェン)」と読みます。

Mavenはイディッシュ語(中欧・東欧のユダヤ人が話していたドイツ語に近い言葉)で「知識の蓄積」「専門家」などの意味を持っています。


開発元

Apacheソフトウェア財団(ASF:Apache Software Foundation)が提供しています。

Apacheソフトウェア財団は元々オープンソースのソフトウェアプロジェクトをサポートする団体でした。

今はソフトウェアブランド・Apacheを持っており、世界的な成功をおさめたオープンソースソフトウェア・コミュニティとして存在しています。


対応しているOS


マルチプラットフォームなので、どのプラットフォームでも同様に動かすことが可能です。


オープンソースソフトウェア

Apache Mavenはオープンソースソフトウェアです。

そのため、無償で利用することができます。


ライセンス

Apacheライセンスを採用しています。

Apacheライセンスとは、オープンソースのライセンスとして使われることが多いライセンスです。

  • ソフトウェアを自由に扱うことができる
  • 再度頒布する時に著作権・ライセンスの表示をする
  • オリジナルからの修正箇所があれば明示する
  • 作者・著作者は何か問題が起こっても責任を負わない
  • 作者が権利を持っている特許技術を使いソフトウェアを開発した時は利用者に特許利用の許可を与えたものとする

上記の条項が存在します。

最後の条項については他オープンソースライセンスにはあまりないものです。

GPLライセンスなどには「公開されたプログラムを改編・組み込んで派生的な著作物はソースコードを公開しなければならない」という決まりがあります。

しかし、Apacheライセンスにはそういう決まりは設けられていません。

そのため、ソースコードを公開することなく配布や販売が可能です。


開発テーマ

Apache Mavenの開発テーマは「開発作業を短縮させる」こと。

そのテーマを目標に据えて、Apache Mavenは日々進化しています。


Apache Mavenの進化


この項目では、Apache Mavenが辿ってきた進化の過程を覗いてみましょう。


Apache Maven1

現在のApache Mavenと同じく、Javaの開発ツールであるApache Maven1。

ですが、動作スピードが遅いというデメリットがありました。

それを改善するために開発を進め、誕生したのがApache Maven2です。


Apache Maven2

Maven1とは別物と考えたほうが良いくらい、Maven2の動作設定ファイルの書式はMaven1のものと異なります。

ただ、Maven1との互換性こそほとんどないですが、Mavenプロジェクトディレクトリにどちらの設定ファイルを併用して共有することが可能です。


Apache Maven3

2010年にリリースされたツールです。

Maven2と後方互換性があります。内部構造に大胆な更新が施されました。


Apache Mavenの機能

キーボードを叩く


ここでは、Apache Mavenの持っている機能について見てみましょう。


ビルトツール

先にも書いたとおり、Apache MavenはJava言語のビルトツールです。


一元管理

Apache Mavenは開発プロジェクトに関係する情報を全てまとめて一元的に管理できます。


様々なファイルの作成ができる

コンパイル、ビルド、テストなどのファイルを作ることができます

その他に、テストレポートやJavadocなどのドキュメント作成も。


プラグインが多数あり

機能を拡張できるプラグインが存在します。

そのほかGit、CVSやSubversionなどのバージョン管理システムにも対応している。


Webサイトを自動的に作成する

Apache MavenにはWebサイトを自動で作り出す機能がついています。

ソフトウェアの基本情報(開発元やライセンス)なども生成されるのでWebサイトを公開するまでの工程がかなり省略可能です。


Apache Mavenの強み

success


Apache Mavenの強みは、プラグインを拡張することで非常に幅広い使い方が可能なところです。

ソースコードのコンパイルはもちろん、テストやテストレポートの生成。

プロジェクトサイトの作成やJARの作成。

サーバーにデプロイなど、色んな機能を備えています。

この多彩な使い方ができる点が、Apache Mavenの最大のポイントといえるでしょう。


Apache MavenとApache Antの違い


Apache Mavenは、Apache Antの代替ツールとして作られました。

この項目では、Apache MavenとApache Antの違いについてご紹介します。

Apache Mavenは「pom.xml」に大体の指示を記述して処理を実行します。

対するApache Antは「build.xml」ファイルに細かい指示を記述して処理を実行します。

どちらが簡単に記述できるかの答えは明白。Apache Mavenのほうが優れているといえるでしょう。

Apache MavenとGradleの違い


同じビルドツールのApache MavenGradleを比較し、どのような違いがあるのか探ってみました。


Gradleとは

AntApache Maven開発テーマを基にして開発されたツールです。

AndoroidStudio」に標準で搭載されています。


ビルドファイルの違い

Apache MavenはXML、GradleはGroovyです。

GradleのビルドファイルがGroovyになったのは、「XMLだと読みにくい」という事情もあったとのこと。


学習コスト

GradleはApache MavenやAntを踏襲してできたツールです。

そんな後発ツールなので「Apache MavenよりもGradleが使いやすいのでは?」と思う人もいるでしょう。

しかし、「XML」も「Groovy」も初めて学ぶ人にとっては同じくらい読みにくいもの。

そのため、Gradleを選んだからといってApache Mavenより学習量が少なくなるわけではないのでご注意ください。


Apache Mavenのダウンロード・インストール方法


この項目では、Apache Mavenの導入について述べています。


Apache Mavenを入手する

公式サイトで最新版のApache Mavenをダウンロードしましょう。

Windowsの場合はzip形式のものを選択。


zipファイルを解凍する

ダウンロードしたファイルをフォルダに解凍します。

これでインストールは完了しました。

しかし、このままだとApache Mavenのコマンド実行の際、正確にパスを記述しなければなりません。

コマンド名だけで実行することができるように、先にパスを通しておきます。


システムパスを設定する

フォルダ内のbinフォルダに、Apache Mavenのプログラムは存在します。

そのbinフォルダのパスを「環境変数Path」に追加します。

binフォルダのパス末尾にセミコロンを挟み記述してください。

記述し終えたら「OK」を押してダイアログを閉じましょう。


Apache Mavenの使用方法①基本


この項目では、Apache Mavenを使う上で知っておきたい基本についてご紹介します。

パスについて

プロジェクトを作る時に覚えておいてほしい「パス」について確認しましょう。

  • 【src/main/java】Javaソースコード
  • 【src/test/java】テスト用Javaソースコード


pom.xmlの要素について

  • 【artifactId】プロジェクト名
  • 【groupId】プロジェクトのルートパッケージ名
  • 【modelversion】pomのバージョン
  • 【packaging】成果物のパッケージングタイプ
  • 【version】プロジェクトのバージョン
  • 【name】プロジェクト表示名(ドキュメント作成時などに使われる)
  • 【dependencies】要素の中に記載する、プロジェクトの依存するライブラリ情報
  • 【url】プロジェクトサイトのURL(ドキュメント作成時に使われる)


Apache Mavenの使用方法②コンパイル&ユニットテスト

チームの仕事


コンパイルする

Apache Mavenでコンパイルするには以下のコードを記述してください。

  1. mvn compile

こう記述することで、ソースコードをプロジェクトで実行できるclassに変換することができます。

作成したclassファイルが出力されるのは「target/class」配下です。


テストする

テストを実行する場合のコマンドは以下の通りになります。

  1. mvn test

なお、初期設定ではテストが実行されるファイルは下記の条件に合致するものです。

  1. **/Test*.java
  2. **/*Test.java
  3. **/*TestCase.java

逆にテストが実施されないのは下記の条件を持つファイルになります。

  1. **/Abstract*Test.java
  2. **/Abstract*TestCase.java
  3. **/*$*


Apache Mavenの使用方法③作成

プログラミングコード


サイトを作成する

以下のコードを記述してください。

  1. mvn site

記載場所は「src/site/site.xml」。

サイト作成に要る情報は「src/site」の配下です。


Javadocを作成する

  1. mvn javadoc:javadoc

Javadocは「target/javadoc」配下に置かれます。


JRAファイルを作成する

パッケージング(JARファイル作成)するには下記のコードを記述してください。

  1. mvn package

ファイルの配置は「target」配下です。


Apache Mavenの使用方法④JARファイルのインストール


作成が完了したJARファイルはローカルリポジトリにインストールすることが可能です。

なお、インストールするとは「反映する」ということ。

インストールが終了すれば、他のプロジェクトから参照することもできます。

ローカルリポジトリにインストールしたい時は、下記コードを記述し実行しましょう。

  1. mvn install


Apache Mavenの使用方法⑤JARファイルを公開する

JARファイルを公開する場合は下のコードを記述してください。

  1. mvn deploy


リポジトリ情報を設定する

公開するためにリモートリポジトリに配置する際「pom.xml」にリモートリポジトリの情報を書くようにしましょう。


リポジトリの子要素について

子要素の名前をご紹介します。

  • id:識別子のこと
  • name:リポジトリの名前のこと
  • url:リポジトリ在処を記したURLのこと


まとめ


以上、Apache Mavenについて紹介しました。

初心者向けにわかりやすく解説しましたが、いかがだったでしょうか。

Apache Mavenにとても興味が湧いたという人は、すぐさまApache Mavenを導入してみると良いでしょう。

実際に触ることでApache Mavenの魅力をもっと知ることができるはず。

インプットの後はアウトプットすることが大切です。

「Apache Mavenを触ってみたい」という気持ちが熱いうちに、Apache Mavenを色々いじってみて獲得した知識をスキル(技術)として身につけましょう。


SHIFTフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。

エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。