我正在尝试使用CURL下载上传到nexus的工件。但是我无法下载它。从命令提示符处执行以下命令不会下载所需的zip文件,我正在使用Nexus管理员帐户
curl -X GET -u userid:pwd "http://nexusserver:8081/nexus/service/local/artifact/maven/redirect?r=Repo_Name&g=GroupID&a=artifactID&v=LATEST&p=zip" -O
Run Code Online (Sandbox Code Playgroud)
网址格式正确吗?我尝试浏览URL(http:// nexusserver:8081 / nexus / service / local / artifact / maven / redirect?r = Repo_Name&g = GroupID&a = artifactID&v = LATEST&p = zip),但在Nexus Repository Manager中找不到HTTP 404 。我正在使用Nexus版本3.0.2-02。我是Nexus的新手,非常感谢您的帮助。
谢谢
您可以使用
curl -L -X GET 'https://MY_NEXUS/service/rest/v1/search/assets/download?sort=version&repository=MY-REPO&group=MY_GROUP&name=MY_ARTIFACT_NAME&maven.baseVersion=0.1-SNAPSHOT' --output some.file
与 Nexus 3 一起使用。
如果需要的话添加-u usr:pw
。
在较新版本的nexus中,您可以:
在bash上归结为:
$ curl -sSL -X GET -G "http://mynexus3.local/service/rest/v1/search/assets" \
-d repository=maven-snapshots \
-d maven.groupId=my.group.id \
-d maven.artifactId=my-artifact \
-d maven.baseVersion=1.0-SNAPSHOT \
-d maven.extension=jar \
-d maven.classifier=jar-with-dependencies \
| grep -Po '"downloadUrl" : "\K.+(?=",)' \
| xargs curl -fsSL -o my-artifact.jar
Run Code Online (Sandbox Code Playgroud)
第一个块将搜索您的工件,并输出类似于
{
"items" : [ {
"downloadUrl" : "http://mynexus3.local/repository/maven-snapshots/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
"path" : "/my/group/id/my-artifact/1.0-SNAPSHOT/my-artifact-1.0-20180821.085657-1-jar-with-dependencies.jar",
"id" : "foo",
"repository" : "maven-snapshots",
"format" : "maven2",
"checksum" : {
"sha1" : "bar",
"md5" : "baz"
}
} ],
"continuationToken" : null
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用grep或类似方法提取下载URL。最后,您传递提取的URL以再次卷曲以下载您的工件。(已在Nexus 3.13上测试)
事实上,Sonatype 明智地决定以一种从 Nexus2 到 Nexus3 完全不兼容的方式改变 REST API——为了系统管理员的乐趣。所以 /service/local/artifact/maven/ 在 Nexus3 中不再可用。
另一种方法 - 独立于 Nexus 版本 - 使用 Maven:
mvn -Dmaven.wagon.http.ssl.insecure=true org.apache.maven.plugins:maven-dependency-plugin:3.0.1:copy -Dartifact=mvngroup:mvnartifactid:mvnversion:mvnpackaging -DoutputDirectory=./
其中“mvnpackaging”可以是 jar、war、zip....
您可以使用以下端点:
GET /service/rest/v1/search/assets/download
执行以下操作:
此端点专门设计用于搜索一项资产,然后将请求重定向到该资产的 downloadUrl
例子:
curl -u admin:admin123 -X GET 'http://localhost:8081/service/rest/v1/search/assets?group=org.osgi&name=org.osgi.core&version=4.3.1&maven.extension=jar&maven.classifier
这些工件现在位于类似于以下内容的 URL 下:
http://nexusserver:8081/repository/ {存储库名称}/
使用它和 Maven 路径的一些知识,您可以获取工件。
也就是说,您正在使用的 URL 还无法正常工作,因为这是我们暂时删除的 REST API 调用。
在较新版本的 Nexus Repository 中,我们开始使用 REST API。如果您至少升级到 3.3(并且升级到 3.5,因为它现已发布),您可以在以下位置访问这项工作的开始部分:
http://nexusserver:8081/swagger-ui/
这是测试版功能,因此可能会发生变化,也就是说,如果您编写了某些内容,并且在新版本中出现问题,您需要修复它,但您可以查看那里,看看是否有一些端点可以帮助您。
您可能想看看:http://localhost:8081/swagger-ui/#!/search/search