Wikipediaには次のように記載されています。
Apache Maven(メイヴン / メイヴェン)は、Java用プロジェクト管理ツールである。Apache Antに代わるものとして作られた。
ソースコードのコンパイル、テスト、Javadoc生成、テストレポート生成、プロジェクトサイト生成、JAR生成、サーバへのデプロイ、WAR, EARファイル生成など様々な機能が用意されている。
参考: https://ja.wikipedia.org/wiki/Apache_Maven
Mavenは主にJavaプロジェクトにおいて、ソースコードのコンパイル、テスト、依存ライブラリ等、プロジェクトを管理をするために使われるOSSです。同じようなものとしてGroovyで書かれたGradleがあります。
よくある不毛な議論としてMavenとGroovyが比較されることがありますが、どちらも同じようなことができるので自分に合う方を使えばいいです。MavenはXMLファイルで記述し、Gradleはスクリプト言語で記述できます。プロジェクトに数人だけ管理できる人がいれば十分なのでどちらか一方を知っておけばよいです。両方わかるのが理想ですが。。
あくまでも依存するパッケージを管理したりテストを実行したりするものです。本番環境へコードをデプロイするような機能もありますが、なんでもかんでもMavenやGroovyに詰め込むのではなく、専用のツールに頼ったほうが良い場合もあります。昨今、CI/CDツールなど便利で融通の効くものがたくさんあるので、他のツールでできるところは専門のツールに任せましょう。
intellijやeclipse等のIDEにプラグインとして組み込まれているので黒い画面からコマンドを叩くことは少ないのかな(?)。自分はコンソールからmvnコマンドを叩く派です。
インストール
JDK8とMavenをダウンロードしてインストールします。Mavenはパスの設定が必要です。
JDK8インストール
$ cd /tmp |
Mavenインストール
$ wget http://ftp.jaist.ac.jp/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz |
proxyの設定が必要であれば以下のように設定する。$ sudo vi /usr/local/apache-maven-3.3.9/conf/settings.xml
<proxy>
<active>true</active>
<protocol>http</protocol>
<host>proxy.hogehoge.jp</host>
<port>8080</port>
</proxy>
プロジェクトの作り方
mavenで用意されている雛形を使うか、1から作るか選べる。雛形を使う場合は以下のようなコマンドを実行すればいい。archetypeArtifactIdは適切なものがあるか調べる必要がある。例えば、Spring-mvnアプリケーションが作りたいってときに指定するarchetypeが用意されているかもしれないので調べてみるといいかも。maven-archetype-quickstartで最低限必要なディレクトリやファイルが生成できる。$ mvn archetype:generate -DgroupId=tech.ishii.hogehoge \
-DartifactId=sample \
-DarchetypeArtifactId=maven-archetype-quickstart
1から作る場合は以下のようにする。$ mkdir project-name && cd project-name
$ mkdir -p src/{main,test}/java/tech/ishii/project
$ tree project-name
project-name
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- tech
| `-- ishii
| `-- project
| `-- App.java
`-- test
`-- java
`-- tech
`-- ishii
`-- project
`-- AppTest.java
上のようなディレクトリとファイルを作ります。
プロジェクトの内容を定義するpom.xmlを作成します。
以下はvertx-coreとkafkaを使うプロジェクトのpom.xmlです。必要となるdependencyを以下のように記述することでコマンド1つですべてのファイルがダウンロードできます。
$ vi pom.xml |
mvnコマンド
pom.xmlの定義が終わったら、mvnコマンドで依存ファイルをダウンロードしたり、テストを実行します。
以下、コマンドの一例を書いておきます。
dependencyをinstallする |
テストはファイルを指定して実行できたり、いくつか便利なオプションがあるので調べてみると良いかと思います。
まとめ
効率よく開発したい時にプロジェクト管理ツールは必ず必要なので知っておくといいかもしれません。