Maven使うときにpom.xmlにimportするとき、だいたいネットから拾ってコピーしてくるけど、ものによってタグが異なることに躓いたので、メモ。
公式(Dependency Scope : Maven – Introduction to the Dependency Mechanism)によると、主に5種類のパターンがある。(依存型pom - dependencyManagement でのみ使える、Maven 2.0.9で追加された import
を含めると6種類)
| scopeの種類 | 説明 |
|:--|:--|
| compile | scope の指定を省略した場合のデフォルト値です。全ての状況でクラスパスに追加されます。 |
| provided | ライブラリが JDK やコンテナによって提供される場合に指定します。コンパイル時のみクラスパスに追加されます。 |
| runtime | 実行時のみに必要な場合に指定します。テストの実行および通常の実行のときにクラスパスに追加されます。 |
| test | テストのときのみ必要な場合に指定します。テストのコンパイルと実行のときにクラスパスに追加されます。 |
| system | 明示的にクラスパスに追加する場合に指定します。このスコープのライブラリは常に有効であるとみなされ、リポジトリの検索は行われません。 |
ピンポイントでは、下記のようなJDBCについてscopeがあったりなかったりする例があったため迷ったが、Mavenの依存範囲 - CodeFlowによるとruntimeが良いようだ。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
<scope>runtime</scope>
</dependency>