【问题标题】:How do I provide URL access to the latest snapshot of an artifact in Nexus 2.x?如何提供对 Nexus 2.x 中工件的最新快照的 URL 访问?
【发布时间】:2012-03-06 00:44:48
【问题描述】:

我想提供一个简单的 URL,它将始终返回工件快照版本的最新版本。简单来说,我的意思是 URL 不会改变,或者要求用户浏览目录并检查时间戳。

【问题讨论】:

  • 我也有同样的问题。我正在编写从 Nexus 下载工件的脚本以及烦人的快照的动态 URL。

标签: maven nexus


【解决方案1】:

请注意

核心 Nexus“重定向”REST API 可用于从指定存储库中检索任何版本的工件:

例如:

https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST

v 参数可以是类似 1.0-SNAPSHOT 的值,在这种情况下,Maven 将返回存储库中保存的最新时间戳快照。同样,如果不存在更新的发布版本,特殊值“LATEST”也应该这样做。

【讨论】:

  • 确保“r”参数使用存储库 ID 而不是存储库名称
  • 这是documentation@Mark O'Connor 的有效网址,您可以更新答案,让读者不必通过 cmets。
  • 这是在 Nexus 3 中弃用的还是我的安装?
  • @ThiagoArrais 此 REST API 在 Nexus 3 中尚不可用。请参阅 Nexus Jira
  • 应该补充一点的是,使用restlet API下载大型工件有明显的性能影响,请参阅:community.sonatype.com/t/…
【解决方案2】:

如果您正在寻找最新版本的快照,只需询问“1.0-SNAPSHOT”将返回该工件快照的最新版本。

但是,如果您要查找“最新版本”,则“v=LATEST”语法将起作用,但请记住,此关键字可以返回您正在查找的快照的最新版本,或发布的版本刚刚完成,或者同一个工件的另一个分支是一个版本,但仍处于“-SNAPSHOT”。

如果您正在寻找绝对最新的,那么是的,请使用“v=LATEST”。如果您正在寻找最新版本,您也可以要求“v=RELEASE”。如果您有一组存储库,则可以通过在 url 中添加以下内容来引用快照存储库和发布存储库:

"...v=RELEASE&r=public"

这应该搜索所有“分组”存储库。

【讨论】:

    【解决方案3】:

    在我的 nexus 机器上的所有结果:

    http://nexushost.domain/nexus/content/repositories/snapshots/com/company/elasticsearch-river-mongodb/1.2.3-SNAPSHOT/

    是这样的: *-1.2.3-20131204.143026-1.zip

    所以我无法直接访问它,因为我需要提供更多动态的详细信息。

    如果我在浏览器中打开“...redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST”的示例,但当我使用某些 linux 机器从某些 linux 机器上安装它时,则无法使用:

    /usr/share/elasticsearch/bin/plugin --url "http://localhost:8081/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip" --install river-mongodb

    所以我的临时解决方案是使用 wget :

    wget -O /tmp/elasticsearch-river-mongodb.zip "http://nexushost.domain/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip"

    然后从本地文件安装最新版本。

    【讨论】:

      【解决方案4】:

      每个存储库都有自己的 url(您可以在存储库浏览器中看到它)。如果打开它,您可以通过组和工件 ID 浏览到您的工件。这是您的网址,例如:http://nexushost.domain/content/repositories/snapshots/com/example/group/artifact/1.2.3-SNAPSHOT/1.2.3-SNAPSHOT.jar

      【讨论】:

      • 我们使用带时间戳的快照版本,所以没那么简单。
      • @chad。这就是 -SNAPSHOT 所做的。将其视为指向最新时间戳版本的符号链接。
      • 这绝对不适合我。我没想到存储库的直接 http 浏览会给我那层元数据检查分辨率。我是否可能需要为此以某种方式配置存储库。 . .
      • 这仅适用于 Maven 2,您可以在其中上传不带时间戳的快照工件。在 Maven 3 中,此行为已被删除。
      • 是的,在这种情况下,您可以使用适当的 Nexus URL:nexushost.domain/service/local/artifact/maven/…
      猜你喜欢
      • 2017-05-01
      • 2023-03-23
      • 2012-09-21
      • 1970-01-01
      • 2011-07-11
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2014-03-18
      相关资源
      最近更新 更多