Maven 2 使用nexusrestapi获取给定groupid/artifactId的最新工件版本
我正在尝试使用NexusRESTAPI来获取maven工件的最新版本。我可以使用Maven 2 使用nexusrestapi获取给定groupid/artifactId的最新工件版本,maven-2,maven,nexus,Maven 2,Maven,Nexus,我正在尝试使用NexusRESTAPI来获取maven工件的最新版本。我可以使用http://repo.local/service/local/data_index?a=local-turbogears服务器&from=0&g=com.turbo&c=bin&v=1.1.9,如果删除版本参数,我可以看到每个版本。然而,当我尝试使用RELEASE或LATEST作为版本时,它返回零结果。 我检查了nexus中磁盘上的maven-metadata.xml,其中有最新版本和最新版本的条目。是否需要采取其
http://repo.local/service/local/data_index?a=local-turbogears服务器&from=0&g=com.turbo&c=bin&v=1.1.9
,如果删除版本参数,我可以看到每个版本。然而,当我尝试使用RELEASE或LATEST作为版本时,它返回零结果。
我检查了nexus中磁盘上的maven-metadata.xml,其中有最新版本和最新版本的条目。是否需要采取其他步骤返回最新版本
我目前正在使用:
Nexus v。1.9.2以下URL将检索log4j 1.2.x的最新版本: 记录 更新 使用curl的示例:
curl -L "http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST" -o log4j.jar
curl -L -X GET "http://<YourNexusUrl>/service/rest/v1/search/assets/download?sort=version&repository=maven-releases&maven.groupId=<yourGroupID>&maven.artifactId=<yourArtifactID>&maven.extension=zip" --output myZip.zip
Log4j2的更新
Log4j 1.2自2015年夏季起即为EOL,已知在Java 9中已被破坏
以下是Log4j工件的链接:
- log4japi:
- log4j核心:
x.y.z-SNAPSHOT
将始终返回最新的二进制文件
最后一点:不要使用最新版本的工件,在绝大多数情况下,如果您有这样的用例,那么您的部署(或您正在做的任何事情)就有问题。一般来说,您应该知道要使用的确切版本。此答案是从以下内容复制而来的: 我有Linux操作系统,无法访问REST API,因此我使用以下命令从Nexus获取最新版本的快照: WSO2存储库中的快照maven-metadata.xml示例:
$ curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml"
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>org.wso2.is</groupId>
<artifactId>wso2is</artifactId>
<versioning>
<latest>5.3.0-SNAPSHOT</latest>
<release></release>
<versions>
<version>5.1.0-SNAPSHOT</version>
<version>5.2.0-SNAPSHOT</version>
<version>5.3.0-SNAPSHOT</version>
</versions>
<lastUpdated>20160914062755</lastUpdated>
</versioning>
</metadata>
在使用
最新版本的尝试REST服务后,发现它并不总是有效(请参阅),我最终创建了一行Linux命令来解析metadata.xml文件:
wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r | head -n 1
wget-O--O/dev/nullhttps://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml |grep-Po'(?在NexusAPI的最新版本中记录了检索组件最新版本的方法,按存储库、组、工件和基本版本进行过滤
例如:
http://localhost:8081/service/rest/v1/search/assets/download?sort=version&repository=maven-snapshots&maven.groupId=org.foo.bar&maven.artifactId=project&maven.baseVersion=1.2.3-SNAPSHOT&maven.extension=jar
参考文件:
对于最新版本的Nexus(自3.16.0起):使用浏览器从maven releases
存储库下载最新版本(以zip文件格式存储)的示例:
http://<YourNexusUrl>/service/rest/v1/search/assets/download?sort=version&repository=maven-releases&maven.groupId=<yourGroupID>&maven.artifactId=<yourArtifactID>&maven.extension=zip
http:///service/rest/v1/search/assets/download?sort=version&repository=maven-发布&maven.groupId=&maven.artifactId=&maven.extension=zip
使用curl:
curl -L "http://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST" -o log4j.jar
curl -L -X GET "http://<YourNexusUrl>/service/rest/v1/search/assets/download?sort=version&repository=maven-releases&maven.groupId=<yourGroupID>&maven.artifactId=<yourArtifactID>&maven.extension=zip" --output myZip.zip
curl-L-xget”http:///service/rest/v1/search/assets/download?sort=version&repository=maven-发布&maven.groupId=&maven.artifactId=&maven.extension=zip”--输出myZip.zip
我可以通过将本地/data\u索引?
替换为本地/artifact/maven/redirect?
并添加一个存储库参数来下载最新版本的工件。同时感谢指向文档的链接=)如果工件不是jar文件怎么办?我已经发布了一个安卓aarlibrary@DeanWild添加&p=aar
@DeanWild搜索结果屏幕(可从Nexus UI获得)将包含指向工件的链接。我无法在公司内部Nexus中使用此功能。我如何计算您提供的链接与我的系统中需要的链接之间的差异?我只得到了HTTP 404,就这样。不知道为什么所有的反对票?这种方法对于我们使用Nexus3的人特别有用,因为Nexus3不再有其他的API了。我知道Stackoverflow中有一个徽章,它通过投反对票来达到目的。出于这个原因,许多人搜索并投反对票——他们无法解开的第一件事就是拿到徽章:)在Nexus 3上非常有效。我想补充的是:<代码>排序-版本排序工作得更好:它将考虑1.0.9,1.0.10,1.0.11作为正确的顺序,而不是字母排序,默认为(1.0.10,1.0.11,1.0.9)阅读MaveMeta。XML是一个好主意,但是似乎元素不可靠,如在其他答案中所描述的,请参阅。对于不再存在的Nexus 3.0及更高版本,您可以使用@dannrob I更新脚本以支持这两个选项“最新版本”的一个简单示例是开发人员环境。开发人员通常希望在最新的构建上做一些事情,例如检查他们的最新更改如何影响他们正在使用的整个软件。为此,您构建了一个管道-版本在构建阶段确定,然后传递给下一个作业。您永远不会为此使用最新版本,至少因为最终会在管道的不同部分部署不同的版本(由于竞争条件)。当然,您不会将其添加到自动化步骤中。但是您的开发人员使用它手动wget
安装最新的包.tar.gz
(或pip安装
等)
curl -L -X GET "http://<YourNexusUrl>/service/rest/v1/search/assets/download?sort=version&repository=maven-releases&maven.groupId=<yourGroupID>&maven.artifactId=<yourArtifactID>&maven.extension=zip" --output myZip.zip