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]]]]

其中 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

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

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

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) 匹配任何版本 v,它们满足 1.0.4 busybox 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 artifiact。如果解析 Mvn URL 出现问题,您应该首先检查处理程序设置,以查看使用哪个本地存储库和远程存储库来解析 URL。

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

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

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

其中 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 Protocol 文档。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.