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 を指定します。groupId、artifactId、version、packaging、および classifier は、Maven アーティファクトを見つけるための標準の Maven コーディネートです。
15.3.3. コーディネートの省略
Mvn URL を指定する場合に、必要なのは groupId と artifactId のコーディネートのみです。以下は、groupId の org.fusesource.example
と、artifactId の bundle-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.13.0.fuse-7_13_0-00012-redhat-00001/system@snapshots@id=karaf.system,file:/home/userid/.m2/repository@snapshots@id=local,file:/path/to/JBossFuse/jboss-fuse-7.13.0.fuse-7_13_0-00012-redhat-00001/local-repo@snapshots@id=karaf.local-repo,file:/path/to/JBossFuse/jboss-fuse-7.13.0.fuse-7_13_0-00012-redhat-00001/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.13.0.fuse-7_13_0-00012-redhat-00001/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.13.0.fuse-7_13_0-00012-redhat-00001/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 ドキュメントを参照してください。