15.3. mvn URL Handler

15.3.1. 概述

如果使用 Maven 构建捆绑包,或者您知道特定捆绑包可从 Maven 存储库获得,您可以使用 Mvn 处理程序方案来定位捆绑包。

注意

为确保 Mvn URL 处理程序可以找到本地和远程 Maven 工件,您可能会发现自定义 Mvn URL 处理程序配置的必要。详情请查看 第 15.3.5 节 “配置 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 时,只需要 groupIdartifactId 协调。以下示例引用了带有 groupIdorg.fusesource.example 的 Maven 捆绑包,以及 artifactId,bundle-demo:

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

当省略了 版本时,如第一个示例所示,默认为 LATEST,它根据可用的 Maven 元数据解析为最新版本。

要在没有指定 打包版本 值的情况下指定 分类器 值,最好在 Mvn URL 中留下差距。同样,如果您要指定没有 version 值的 打包 值。例如:

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

15.3.4. 指定版本范围

在 Mvn URL 中指定 版本 值时,您可以指定一个版本范围(使用标准 Maven 版本范围语法)来代替简单的版本号。您可以使用方括号[]- 表示包含范围和括号()- 表示专用范围。例如,范围 [1.0.4,2.0) 匹配任何版本 v,它满足 1.0.4 categories v < 2.0。您可以在 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:edit 命令的重点切换到属于 org.ops4j.pax.url.mvn persistent ID 的属性。config:proplist 命令输出当前持久性 ID 的所有属性设置。对于 org.ops4j.pax.url.mvn,您应该会看到类似如下的列表:

   org.ops4j.pax.url.mvn.defaultRepositories = file:/path/to/JBossFuse/jboss-fuse-7.8.0.fuse-780038-redhat-00001/system@snapshots@id=karaf.system,file:/home/userid/.m2/repository@snapshots@id=local,file:/path/to/JBossFuse/jboss-fuse-7.8.0.fuse-780038-redhat-00001/local-repo@snapshots@id=karaf.local-repo,file:/path/to/JBossFuse/jboss-fuse-7.8.0.fuse-780038-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.8.0.fuse-780038-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.8.0.fuse-780038-redhat-00001/etc/maven-settings.xml
   org.ops4j.pax.url.mvn.useFallbackRepositories = false
   service.pid = org.ops4j.pax.url.mvn

其中 localRepository 设置显示处理器当前使用的本地存储库位置,而 存储库 设置则显示处理程序当前使用的远程存储库列表。

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 协议 文档。