我正在尝试使用nexusREST API来获取一个maven工件的最新版本。我能够浏览到我正在寻找的特定版本使用http://repo.local/service/local/data_index?a=local-turbogears-server&from=0&g=com.turbo&c=bin&v=1.1.9
,如果我删除版本参数,我可以看到每个版本。然而,当我尝试使用RELEASE或LATEST作为版本时,它返回零结果。我检查了nexus磁盘上的maven-metadata.xml,有最新和发布的条目。我是否需要采取其他步骤来返回最新版本?
我目前正在使用:
Nexus v. 1.9.2
7条答案
按热度按时间5hcedyr01#
以下URL将检索最新版本的log4j 1.2.x:
http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST
已记录here
更新
使用curl的示例:
字符串
Log4j 2更新
Log4j 1.2从2015年夏天开始停产,已知在Java 9中被破坏。
下面是Log4j工件的链接:
crcmnpdw2#
在Nexus中,LATEST的设计是为了与 *maven插件 * 一起工作,而不是与常规工件一起工作。Nexus只是不保证最新的工作在其他情况下。如果现在它返回工件的正确版本,明天它可能会停止工作,例如。如果您为Nexus存储库运行“重建元数据”。您是否希望依靠随时可能断裂的机制(例如在发行过程中?).我怀疑。阅读this article获得更多的洞察力。
为了找到最新的工件版本,您应该编写自己的脚本来调用Search API,并根据需要对工件版本进行排序。或者你可以写你自己的插件为Nexus。
或者,如果您的工作流程允许,您可以使用SNAPSHOT,而非出版版本。如果不递增数字部分,则
x.y.z-SNAPSHOT
将始终返回最新的二进制。最后一点:不要使用最新版本的工件,在大多数情况下,如果您有这样的用例,那么您的部署(或您正在做的任何事情)都有问题。一般来说,您应该知道要使用的确切版本。
fhity93d3#
此答案已复制自:https://stackoverflow.com/a/39485361/1450799
我使用Linux操作系统,无法访问REST API,因此我使用以下命令从Nexus获取最新版本的快照:
WSO 2存储库中的maven-metadata.xml快照示例:
字符串
从maven-metadata.xml中的最新XML标记提取:
型
从maven-metadata.xml中的version XML标签提取:
型
截至2016年9月14日,这两个命令的结果是:
型
icomxhvb4#
在尝试使用
LATEST
版本的REST服务后,发现它并不总是工作(参见@Stanislav response),我最终创建了这个单行Linux命令来解析metadata.xml文件:字符串
只需将其更改为合适的网址,它就能为您服务。
干杯
3npbholx5#
对于最新版本的Nexus(从3.16.0开始):使用浏览器从
maven releases
仓库下载最新版本(以zip文件格式存储)的示例:字符串
使用curl:
型
b1payxdu6#
在Nexus API的最新版本中,记录了检索组件最新版本的方法,通过存储库、组、工件和基本版本进行筛选
示例:http://localhost:8081/service/rest/v1/search/assets/download?sort=version&repository= maven-snapshot &maven.groupId= org.foo.bar &maven.artifactId=project&maven.baseVersion=1.2.3-SNAPSHOT&maven.extension=jar
参考文件:https://help.sonatype.com/repomanager3/rest-and-integration-api/search-api#SearchAPI-SearchComponents
4urapxun7#
另一种使用“jq”从Nexus下载最新工件的方法
字符串