使用CURL下载Nexus工件

dbf7pr2w  于 2022-11-13  发布在  其他
关注(0)|答案(7)|浏览(298)

I'm trying to download an artifact uploaded to nexus using CURL. But I'm unable to get it downloaded. The below command execution from command prompt doesn't download the required zip file and I'm using Nexus admin account

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

Did I form the URL correctly? I tried to browse the URL ( http://nexusserver:8081/nexus/service/local/artifact/maven/redirect?r=Repo_Name&g=GroupID&a=artifactID&v=LATEST&p=zip ), but got HTTP 404 Not found in Nexus Repository Manager. I'm using Nexus version 3.0.2-02. I'm new to nexus and any help is greatly appreciated.
Thanks

aor9mmx1

aor9mmx11#

在较新版本的nexus中,您可以:
1.使用curl通过新的REST-API在nexus中搜索maven构件
1.解析json-response以提取下载链接
1.使用curl下载工件
在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

第一个块将搜索工件,并输出类似于

{
  "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
}

然后你可以使用grep或者类似的东西来提取下载URL。最后你把提取的URL再次传递给curl来下载你的工件。(用Nexus 3. 13测试)

wydwbb8l

wydwbb8l2#

事实上,Sonatype明智地决定以一种完全不兼容的方式将REST API从Nexus 2更改为Nexus 3--这让系统管理员很高兴。因此,/service/local/artifact/maven/在Nexus 3中不再可用。
另一种独立于Nexus版本的方法是使用Maven:
如果您有任何问题,请与我们联系。如果您有任何问题,请与我们联系。
其中“mvn Package ”可以是jar、war、zip....

omhiaaxx

omhiaaxx3#

您可以在Nexus 3中使用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
如果需要,添加-u usr:pw

vktxenjb

vktxenjb4#

您可以使用下列端点:
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

e0bqpujr

e0bqpujr5#

下面的陈述对我很有效。

curl -X GET https://<username>:<password>@<nexusdomain>/repository/<repository name>/<filepath> --output <filename>

例如

curl -X GET https://sampleuser:samplepassword@mynexus.com/repository/maven-public/public/util/demo.jar --output demo.jar
wwodge7n

wwodge7n6#

这些人工因素现在位于类似下列的URL下:
http://nexusserver:8081/repository/ {存储库名称}/
利用这些知识和一些Maven路径知识,您可以获得工件。
也就是说,您正在使用的URL还不能正常工作,因为这是一个REST API调用,我们暂时删除了它。
在Nexus Repository的较新版本中,我们已经有了REST API的开始部分。如果您至少升级到3.3(和3.5,因为它现在已经发布),您可以在以下位置访问此工作的开始部分:
http://nexusserver:8081/swagger-ui/
这是测试版功能,因此可能会更改,也就是说,如果您编写的内容在新版本中出现故障,您需要修复它,但您可以查看那里是否有一些端点可以帮助您。
您可能需要了解:搜索结果

pjngdqdw

pjngdqdw7#

这对我来说很好:
--output '/d/您的/路径/文件.war' -u用户名:密码

相关问题