家族について考えるパパのブログ

普段の生活をいかに快適に過ごすかを考えて実践をしていくブログ

Mavenとは

こんにちは!

 

今日は、最近躓くことが多いMavenについて書いてみます。

 

Mavenとは

Project Object Model(POM)というプロジェクトの考え方(※1)に基づいてプロジェクトを管理するツール。

 

POMについて

基本的なPOMファイルは以下のようなものです。

 

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>sample</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>Maven SAMPLE</name>
  <dependencies>
    <dependency>
      <groupId>taka</groupId>
      <artifactId>taka</artifactId>
      <version>1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project

 

 

各要素の意味

modelVersion       : POMのバージョン

groupId                : プロジェクトを一意に識別する名前            

artifectId              : プロジェクトの成果物の名前

packaging    : 成果物のパッケージングタイプ(jar、war、earなどがある)

version                 : プロジェクトのバージョン

name                   : プロジェクトの表示名

url                        : プロジェクトサイトのURL

dependencies     : プロジェクトが依存するライブラリの情報

scope                  : 参照するタイミングを指定

 

POMには、親POMと子POMがあり、親POMの以下の要素は子POMに継承される。

  • dependencies
  • developers and contributors
  • plugin lists
  • reports lists
  • plugin executions with matching ids
  • plugin configuration
  • groupId
  • version 

 

Mavenリポジトリについて

JARなどの成果物をまとめておく場所をMavenリポジトリという。

そして、Mavenリポジトリには、remote repositoryとlocal repositoryというものがあります。

※remote repositoryには、public repositoryとprivate repositoryというものが含まれています。

 

local repositoryとは

mvnコマンドを実行したマシンにあるdirectoryのこと。

デフォルトでは、.m2/repository フォルダが利用される。

他のrepositoryからダウンロードしたlibraryを保管したりするために使われる。

 

local repositoryへのインストール

mvn installによって、プロジェクトの成果物(JARファイルやソースコード)をlocal repositoryにインストールできる。

 

Mavenの内部的動作

基本的にMavenでは、ライブラリを取得する時にはlocal repositoryを確認して、そこになかった場合にremote repositoryを見にいく。

 

 

 

 

現在の疑問点(宿題)

・「mvn eclipse:eclipseとmvn installだと見にいく先が違う」という話を聞いた。それはどういうことか?

・mvn installは、gitでいうところのgit pullと同じような動き(remoteからlocalに持ってくる動き)だと思っていたが、そうなのか?

 → 調べてみたらmvn installは、remote repositoryに公開されていないlibraryをprivate repository(remote repository)にインストールするということらしいのでローカルに持ってくるとかそういうことじゃないみたい。

・意図的に特定のlocal repository、remote repositoryを見にいくのはどうやってやるのか?

 

読んでいただきありがとうございました。

まだまだ理解が足りないので、勉強してちゃんと理解できるようにします。(中途半端な完成度で申し訳ありません)

ぜひ、Mavenに関して間違っていることやもっと知っておいた方が良いことがありましたら教えていただけるとうれしいです。

 

 

※1Mavenが考える「プロジェクト」の構造は、以下のような構成です。

 ・プロジェクトが実施されている組織

 ・ソースリポジトリ

 ・メーリングリスト

 ・開発者

 ・貢献者

 ・ライセンス

 ・依存ライブラリ

 ・成果物の構築

 ・各種レポート