chr*_*sst 40 maven-2 nexus maven
我正在尝试使用nexus REST 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
Mar*_*nor 66
以下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
Run Code Online (Sandbox Code Playgroud)
Log4j 1.2自2015年夏季开始就是EOL,并且已知在Java 9中被破解.
以下是Log4j工件的链接:
Sta*_*sev 23
在Nexus中,LATEST旨在使用maven插件而不是常规工件.Nexus根本不保证LATEST在其他情况下工作.如果现在它返回正确版本的工件,明天这可能会停止工作,例如,如果您运行Nexus存储库的重建元数据.您是否希望依赖可能随时中断的机制(例如在发布过程中?).我怀疑.阅读本文以获得更多见解.
为了找到LATEST工件版本,您应该编写自己的脚本来调用Search API并根据需要对工件版本进行排序.或者你可以为Nexus编写自己的插件.
或者,如果您的工作流程允许,您可以使用SNAPSHOT而不是发行版本.如果不增加数字部分,x.y.z-SNAPSHOT则将始终返回最新的二进制文件.
最后一点:不要使用最新版本的工件,在绝大多数情况下,如果你有这样的用例,那么你的部署(或者你正在做的任何事情)都有问题.通常,您应该知道要使用的确切版本.
Rez*_*imi 15
此答案已复制自:https://stackoverflow.com/a/39485361/1450799
我有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>
Run Code Online (Sandbox Code Playgroud)
从maven-metadata.xml中的最新XML标记中提取:
curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | \
grep "<latest>.*</latest>" | \
sed -e "s#\(.*\)\(<latest>\)\(.*\)\(</latest>\)\(.*\)#\3#g"
Run Code Online (Sandbox Code Playgroud)
从maven-metadata.xml中的版本XML标记中提取:
curl -s "http://maven.wso2.org/nexus/content/repositories/snapshots/org/wso2/is/wso2is/maven-metadata.xml" | \
grep "<version>.*</version>" | \
sort --version-sort | uniq | tail -n1 | \
sed -e "s#\(.*\)\(<version>\)\(.*\)\(</version>\)\(.*\)#\3#g"
Run Code Online (Sandbox Code Playgroud)
截至2016年9月14日,这两个命令的结果是:
5.3.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
在尝试使用该LATEST版本的 REST 服务后,发现它并不总是有效(参见@Stanislav 响应),我最终创建了这个用于解析 metadata.xml 文件的单行 Linux 命令:
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
Run Code Online (Sandbox Code Playgroud)
只需将 更改为适当的 url,它应该适合您。
干杯
小智 5
maven releases对于最新版本的 Nexus(自 3.16.0 起):使用浏览器从存储库下载最新版本(以 zip 文件格式存储)的示例:
http://<YourNexusUrl>/service/rest/v1/search/assets/download?sort=version&repository=maven-releases&maven.groupId=<yourGroupID>&maven.artifactId=<yourArtifactID>&maven.extension=zip
Run Code Online (Sandbox Code Playgroud)
使用卷曲:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69444 次 |
| 最近记录: |