使用CURL下载Nexus工件

使用CURL下载Nexus工件,curl,nexus,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格式

我正在尝试使用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格式正确吗?我试图浏览URL(),但在Nexus存储库管理器中找不到HTTP 404。我使用的是Nexus版本3.0.2-02。我是nexus的新手,非常感谢您的帮助


感谢

工件现在位于URL下,类似于:

{repositoryname}/

使用这些和一些Maven路径的知识,您可以获得工件

也就是说,您正在使用的URL还不能正常工作,因为这是我们暂时删除的RESTAPI调用

在Nexus Repository的较新版本中,我们已经开始使用RESTAPI。如果您至少升级到3.3(3.5,因为它现在已经过时),您可以在以下位置访问此工作的开始:

这是测试版的功能,所以可能会改变,也就是说,如果你写了一些东西,并且在更新的版本中出现了问题,你需要修复它,但是你可以看看那里是否有一些端点可以帮助你


您可能想看看:

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

  • 使用curl通过新的REST-API在nexus中搜索maven工件
  • 解析json响应以提取下载链接
  • 使用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进行测试)

    确实,Sonatype出色地决定以一种完全不兼容的方式将REST API从Nexus2更改为Nexus3,这让系统管理员感到高兴。因此/service/local/artifact/maven/在Nexus3中不再可用

    另一种独立于Nexus版本的方法是使用Maven:

    mvn-Dmaven.wagen.http.ssl.unsecure=true org.apache.maven.plugins:maven依赖插件:3.0.1:copy-Dartifact=mvngroup:mvnartifactid:mvnversion:mvnpacking-DoutputDirectory=。/


    其中“MVNPacking”可以是jar、war、zip……

    您可以使用以下端点:
    GET/service/rest/v1/search/assets/download

    这将执行以下操作:
    此端点专门用于搜索一个资产,然后将请求重定向到该资产的下载URL

    示例:
    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-L-X GET'https://MY_NEXUS/service/rest/v1/search/assets/download?sort=version&repository=MY-REPO&group=MY\u group&name=MY\u ARTIFACT\u name&maven.baseVersion=0.1-SNAPSHOT'--输出一些.file
    与Nexus3


    如果需要,添加
    -u usr:pw

    您使用的是哪个nexus版本?他们还有一个端点
    GET/service/rest/v1/search/assets/download
    ,它执行以下操作:示例:
    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“
    事实上,这看起来好多了。你应该把这个问题的另一个答案提交给@nicolimo86