Java Maven pom.xmlの構造

photo of person typing on computer keyboard
目次

pom.xmlとは

POM はProject Object Modelの略です。プロジェクトの情報、依存するライブラリ等を記述します。タスクを実行すると、Mavenはカレントディレクトリのpom.xmlを参照し、設定を読み込みます。いくつかのデフォルトの設定があります。

  • ビルド結果はtarget/に出力される
  • ソースはsrc/main/javaに配置する
  • テストコードはsrc/test/javaに配置する

pom.xmlの定義

以下でxmlのスキームを定義しています。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

以下はプロジェクトの情報を定義しています。

  <groupId>org.example</groupId>
  <artifactId>mvn-sample-intellij</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>mvn-sample-intellij</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
要素説明
groupId組織を指定するID
artifactId組織の中でユニークとなるプログラムのID
versionプログラムのバージョン
nameプログラムの名称
urlプログラムまたは組織のURL

依存ライブラリの設定とスコープ

以下はプロジェクトが依存するライブラリを定義している箇所です。

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
groupIdグループIDを指定します。必須項目です。
artifactIdアーティファクトIDを指定します。必須項目です。
version使用するライブラリのバージョンを指定します。
省略すると通常は最新バージョンが使用されます。
scopeライブラリが適用される範囲を指定します。
compile, propvided, runtime, test, systemのいずれかを指定します。
省略するとcopmileが指定されます。

scope

以下ページより引用

スコープ説明
compilescope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。
providedライブラリが JDK やコンテナによって提供される場合に指定します。コンパイル時のみクラスパスに追加されます。
runtime実行時のみに必要な場合に指定します。テストの実行および通常の実行のときにクラスパスに追加されます。
testテストのときのみ必要な場合に指定します。テストのコンパイルと実行のときにクラスパスに追加されます。
system明示的にクラスパスに追加する場合に指定します。このスコープのライブラリは常に有効であるとみなされ、リポジトリの検索は行われません。

依存ライブラリの場所

依存ライブラリは、mavenのリポジトリで管理されている。

https://repo1.maven.org/maven2/

よかったらシェアしてね!
目次