15.3. Mvn URL ハンドラー

15.3.1. 概要

Maven を使用してバンドルをビルドする場合、または特定のバンドルが Maven リポジトリーから利用可能であることがわかっている場合は、Mvn ハンドラースキームを使用してバンドルを見つけることができます。

注記

Mvn URL ハンドラーがローカルおよびリモートの Maven アーティファクトを確実に検出できるようにするには、Mvn URL ハンドラーの設定をカスタマイズする必要がある場合があります。詳細は、「Mvn URL ハンドラーの設定」 を参照してください。

15.3.2. 構文

Mvn URL の構文は次のとおりです。

mvn:[repositoryUrl!]groupId/artifactId[/[version][/[packaging][/[classifier]]]]

ここで、repositoryUrl は、オプションで Maven リポジトリーの URL を指定します。groupIdartifactIdversionpackaging、および classifier は、Maven アーティファクトを見つけるための標準の Maven コーディネートです。

15.3.3. コーディネートの省略

Mvn URL を指定する場合に、必要なのは groupIdartifactId のコーディネートのみです。以下は、groupIdorg.fusesource.example と、artifactIdbundle-demo で Maven バンドルを参照する例です。

mvn:org.fusesource.example/bundle-demo
mvn:org.fusesource.example/bundle-demo/1.1

最初の例のように、バージョンを省略すると、デフォルトは LATEST に設定されます。これにより、利用可能な Maven メタデータに基づいて最新バージョンに解決されます。

packaging または version 値を指定せずに classifier 値を指定するには、Mvn URL 用にスペースを空けることができます。version 値なしで packaging 値を指定する場合も同様です。以下に例を示します。

mvn:groupId/artifactId///classifier
mvn:groupId/artifactId/version//classifier
mvn:groupId/artifactId//packaging/classifier
mvn:groupId/artifactId//packaging

15.3.4. バージョン範囲の指定

Mvn URL で version 値を指定する場合、単純なバージョン番号の代わりにバージョンの範囲 (標準の Maven バージョン管理構文を使用) を指定できます。角括弧 [ および ] を使用して含まれる範囲を示し、括弧 ( および ) を使用して除外される範囲を示します。たとえば、範囲 [1.0.4,2.0) は、1.0.4 ⇐ v < 2.0 を満たすすべてのバージョン v に一致します。このバージョン範囲は、以下のように Mvn URL で使用できます。

mvn:org.fusesource.example/bundle-demo/[1.0.4,2.0)

15.3.5. Mvn URL ハンドラーの設定

Mvn URL を初めて使用する前に、以下のように Mvn URL ハンドラー設定をカスタマイズする必要がある場合があります。

15.3.6. Mvn URL 設定の確認

Mvn URL ハンドラーは、ローカル Maven リポジトリーへの参照を解決し、リモート Maven リポジトリーのリストを維持します。Mvn URL を解決するとき、ハンドラーは最初にローカルリポジトリーを、その後にリモートリポジトリーを検索して、指定された Maven アニティーを見つけます。Mvn URL の解決に問題がある場合は、最初にハンドラー設定を確認し、URL の解決に使用するローカルリポジトリーおよびリモートリポジトリーを確認することができます。

Mvn URL 設定を確認するには、コンソールで以下のコマンドを入力します。

JBossFuse:karaf@root> config:edit org.ops4j.pax.url.mvn
JBossFuse:karaf@root> config:proplist

config:edit コマンドは、config ユーティリティーの焦点を org.ops4j.pax.url.mvn 永続 ID に属するプロパティーに切り替えます。config:proplist コマンドは、現在の永続 ID のプロパティー設定をすべて出力します。org.ops4j.pax.url.mvn を対象とすると、以下のようなリストが表示されるはずです。

   org.ops4j.pax.url.mvn.defaultRepositories = file:/path/to/JBossFuse/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/system@snapshots@id=karaf.system,file:/home/userid/.m2/repository@snapshots@id=local,file:/path/to/JBossFuse/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/local-repo@snapshots@id=karaf.local-repo,file:/path/to/JBossFuse/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/system@snapshots@id=child.karaf.system
   org.ops4j.pax.url.mvn.globalChecksumPolicy = warn
   org.ops4j.pax.url.mvn.globalUpdatePolicy = daily
   org.ops4j.pax.url.mvn.localRepository = /path/to/JBossFuse/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/data/repository
   org.ops4j.pax.url.mvn.repositories = http://repo1.maven.org/maven2@id=maven.central.repo, https://maven.repository.redhat.com/ga@id=redhat.ga.repo, https://maven.repository.redhat.com/earlyaccess/all@id=redhat.ea.repo, https://repository.jboss.org/nexus/content/groups/ea@id=fuseearlyaccess
   org.ops4j.pax.url.mvn.settings = /path/to/jboss-fuse-7.11.1.fuse-7_11_1-00013-redhat-00003/etc/maven-settings.xml
   org.ops4j.pax.url.mvn.useFallbackRepositories = false
   service.pid = org.ops4j.pax.url.mvn

localRepository 設定は、ハンドラーによって現在使用されているローカルリポジトリーの場所を示し、repositories の設定は、ハンドラーによって現在使用されているリモートリポジトリーのリストを示します。

15.3.7. 設定ファイルを編集します。

Mvn URL ハンドラーのプロパティー設定をカスタマイズするには、以下の設定ファイルを編集します。

InstallDir/etc/org.ops4j.pax.url.mvn.cfg

このファイルの設定により、ローカル Maven リポジトリーの場所を明示的に指定し、Maven リポジトリーや Maven プロキシーサーバー設定を削除できるようになります。これらの設定の詳細は、設定ファイルのコメントを参照してください。

15.3.8. ローカルリポジトリーの場所のカスタマイズ

特に、ローカルの Maven リポジトリーがデフォルト以外の場所にある場合は、ローカルにビルドする Maven アーティファクトにアクセスするために、明示的に設定する必要がある場合があります。org.ops4j.pax.url.mvn.cfg 設定ファイルで、org.ops4j.pax.url.mvn.localRepository プロパティーのコメントを解除し、ローカルの Maven リポジトリーの場所に設定します。以下に例を示します。

# Path to the local maven repository which is used to avoid downloading
# artifacts when they already exist locally.
# The value of this property will be extracted from the settings.xml file
# above, or defaulted to:
#     System.getProperty( "user.home" ) + "/.m2/repository"
#
org.ops4j.pax.url.mvn.localRepository=file:E:/Data/.m2/repository

15.3.9. 参照資料

mvn URL 構文の詳細は、元の Pax URL の Mvn Protocol ドキュメントを参照してください。