15.3. mvn URL Handler


15.3.1. 概述

如果您使用 Maven 构建捆绑包,或者知道特定捆绑包可从 Maven 存储库中获取,您可以使用 Mvn handler 方案来定位捆绑包。

注意

为确保 Mvn URL 处理程序可以找到本地和远程 Maven 工件,您可能会发现需要它来自定义 Mvn URL 处理程序配置。详情请查看 第 15.3.5 节 “配置 Mvn URL 处理程序”

15.3.2. 语法

Mvn URL 具有以下语法:

mvn:[repositoryUrl!]groupId/artifactId[/[version][/[packaging][/[classifier]]]]
Copy to Clipboard Toggle word wrap

其中 repositoryUrl optionally 指定 Maven 存储库的 URL。groupIdartifactId版本打包和 分类器 是标准的 Maven 协调,用于查找 Maven 工件。

15.3.3. 省略协调

当指定 Mvn URL 时,只需要 groupIdartifactId 协调。以下示例使用 groupIdorg.fusesource.example 以及 artifactId,bundle-demo 来引用 Maven 捆绑包:

mvn:org.fusesource.example/bundle-demo
mvn:org.fusesource.example/bundle-demo/1.1
Copy to Clipboard Toggle word wrap

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

要指定 分类器 值而不指定 打包版本 值,可以在 Mvn URL 中造成差距。同样,如果您想要指定没有 版本 值的 打包 值。例如:

mvn:groupId/artifactId///classifier
mvn:groupId/artifactId/version//classifier
mvn:groupId/artifactId//packaging/classifier
mvn:groupId/artifactId//packaging
Copy to Clipboard Toggle word wrap

15.3.4. 指定版本范围

当在 Mvn URL 中指定 version 值时,您可以指定一个版本范围(使用标准 Maven 版本范围语法)以代替简单的版本号。您可以使用方括号[]- 表示带括号和括号- 以表示独占范围。例如,范围 [1.0.4,2.0) 匹配任何版本 v,它们满足 1.0.4 busybox v < 2.0。您可以在 Mvn URL 中使用这个版本范围,如下所示:

mvn:org.fusesource.example/bundle-demo/[1.0.4,2.0)
Copy to Clipboard Toggle word wrap

15.3.5. 配置 Mvn URL 处理程序

首次使用 Mvn URL 前,您可能需要自定义 Mvn URL 处理程序设置,如下所示:

15.3.6. 检查 Mvn URL 设置

Mvn URL 处理程序解析对本地 Maven 存储库的引用,并维护远程 Maven 存储库列表。解决 Mvn URL 时,处理程序首先搜索本地存储库,然后搜索远程存储库以查找指定的 Maven artifiact。如果解析 Mvn URL 出现问题,您应该首先检查处理程序设置,以查看使用哪个本地存储库和远程存储库来解析 URL。

要检查 Mvn URL 设置,在控制台中输入以下命令:

JBossFuse:karaf@root> config:edit org.ops4j.pax.url.mvn
JBossFuse:karaf@root> config:proplist
Copy to Clipboard Toggle word wrap

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.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
Copy to Clipboard Toggle word wrap

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

15.3.7. 编辑配置文件

要自定义 Mvn URL 处理程序的属性设置,请编辑以下配置文件:

InstallDir/etc/org.ops4j.pax.url.mvn.cfg
Copy to Clipboard Toggle word wrap

此文件中的设置允许您显式指定本地 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
Copy to Clipboard Toggle word wrap

15.3.9. 参考

有关 mvn URL 语法的详情,请查看原始 Pax URL Mvn Protocol 文档。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat