使用 CURL 下载 Nexus 工件



我正在尝试使用 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

我是否正确地形成了网址?我尝试浏览URL(http://nexusserver:8081/nexus/service/local/artifact/maven/redirect?r=Repo_Name&g=GroupID&a=artifactID&v=LATEST&p=zip(,但在Nexus存储库管理器中找不到HTTP 404。我使用的是 Nexus 版本 3.0.2-02。我是 nexus 的新手,非常感谢任何帮助。

谢谢

在较新版本的 nexus 中,您可以:

  1. 使用 curl 通过新的 REST-API 在联结中搜索 maven 工件
  2. 解析 json 响应以提取下载链接
  3. 使用 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 传递到再次卷曲以下载工件。 (使用 Nexus 3.13 测试(

事实上,Sonatype出色地决定以完全不兼容的方式将REST API从Nexus2更改为Nexus3 - 为了系统管理员的乐趣。因此,/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=./

其中"MVN包装"可以是罐子,战争,拉链....

您可以使用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

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

下面的陈述对我有用。

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

项目现在位于类似于以下内容的 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

这对我来说很好用:

curl -L -X get 'http://YOURNEXUSSERVER:8081/service/rest/v1/search/assets/download?sort=version&repository=YOUREPO&group=YOURGROUP&name=YOURARTIFACTID&maven.extension=war' --output '/d/YOUR/PATH/FILE.war' -u user:password

最新更新