【发布时间】:2012-03-06 00:44:48
【问题描述】:
我想提供一个简单的 URL,它将始终返回工件快照版本的最新版本。简单来说,我的意思是 URL 不会改变,或者要求用户浏览目录并检查时间戳。
【问题讨论】:
-
我也有同样的问题。我正在编写从 Nexus 下载工件的脚本以及烦人的快照的动态 URL。
我想提供一个简单的 URL,它将始终返回工件快照版本的最新版本。简单来说,我的意思是 URL 不会改变,或者要求用户浏览目录并检查时间戳。
【问题讨论】:
请注意
- 此答案与 Nexus 2.X 相关
- 使用 restlet API 下载大型工件会显着影响性能,请参阅:https://community.sonatype.com/t/slow-artefacts-download-performance-with-oss-2-x/2280
核心 Nexus“重定向”REST API 可用于从指定存储库中检索任何版本的工件:
例如:
v 参数可以是类似 1.0-SNAPSHOT 的值,在这种情况下,Maven 将返回存储库中保存的最新时间戳快照。同样,如果不存在更新的发布版本,特殊值“LATEST”也应该这样做。
【讨论】:
如果您正在寻找最新版本的快照,只需询问“1.0-SNAPSHOT”将返回该工件快照的最新版本。
但是,如果您要查找“最新版本”,则“v=LATEST”语法将起作用,但请记住,此关键字可以返回您正在查找的快照的最新版本,或发布的版本刚刚完成,或者同一个工件的另一个分支是一个版本,但仍处于“-SNAPSHOT”。
如果您正在寻找绝对最新的,那么是的,请使用“v=LATEST”。如果您正在寻找最新版本,您也可以要求“v=RELEASE”。如果您有一组存储库,则可以通过在 url 中添加以下内容来引用快照存储库和发布存储库:
"...v=RELEASE&r=public"
这应该搜索所有“分组”存储库。
【讨论】:
在我的 nexus 机器上的所有结果:
是这样的: *-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"
然后从本地文件安装最新版本。
【讨论】:
每个存储库都有自己的 url(您可以在存储库浏览器中看到它)。如果打开它,您可以通过组和工件 ID 浏览到您的工件。这是您的网址,例如:http://nexushost.domain/content/repositories/snapshots/com/example/group/artifact/1.2.3-SNAPSHOT/1.2.3-SNAPSHOT.jar
【讨论】: