4

我想知道如何将所有(不是一个或两个指定的)工件从 Nexus 3 存储库下载到本地磁盘。在 Nexus 2 中这很容易,因为所有内容都存储在磁盘上,我只需将所有工件同步到本地磁盘。

但在 Nexus 3 中,所有工件都存储在 OrientDB 中,我将不得不采取其他方式。在以某种方式获得完整列表后,我正在考虑通过 http 下载它们。

有人知道如何执行这种导出吗?

4

5 回答 5

3

可以使用n3dr从 Nexus3 存储库下载所有工件。

于 2019-05-06T13:54:16.170 回答
1

我修改了以下 groovy scirpt,可以使用 API 上传:https ://gist.github.com/kellyrob99/2d1483828c5de0e41732327ded3ab224

要上传和执行脚本,我查看了示例:https ://github.com/sonatype/nexus-book-examples/tree/nexus-3.x

于 2017-11-07T09:44:58.677 回答
0

您可以使用 REST-API 检索所有 DownloadURL,然后将它们全部下载。我用一个简单的 Python 脚本做到了这一点。

于 2017-11-06T08:45:28.893 回答
0

如果您在 Dockerfile 上看到版本升级,他们已经修改了基础应用程序的位置。您需要将存储指向

/opt/sonatype/sonatype-work

来源:https ://github.com/sonatype/docker-nexus3/blob/master/Dockerfile

于 2021-12-13T13:49:29.740 回答
-1

我必须将所有工件从一个 Nexus 3 存储库移动到另一个存储库。一旦这是偶然的,我开发了程序(Windows):

  • 从 Nexus 的网络界面/浏览/资产获取带有资产列表的 JSON
  • 通过收集资产的“名称”属性的值来提取资产的 URL
  • 删除所有 .md5、.sha1、maven-metadata.xml 的资产
  • 删除另一个 atrifact 的 pom.xml 的所有资产
  • 将工件 URLS 拆分为

    path in the repository - it is in the format /<groupId path>/<artifactId>/<versionId>/<file name>
    groupId- parse the path, replacing / with .
    artifactId - parse the path,
    version - parse the path, 
    file name - parse the path
    packaging - the file name extension
    
  • 对于每个这样的解析 URL 调用脚本(名为 publish.bat):

    @echo off
    rem %1 = from repository URL
    rem %2 = to repository URL
    rem %3 = path
    rem %4 = groupId
    rem %5 = artifactId
    rem %6 = version
    rem %7 = file name
    rem %8 = packaging
    echo.
    echo %1%3/%5/%6/%7
    echo.
    
    curl --remote-name --create-dirs --output %7 %1%3/%5/%6/%7
    
    call mvn deploy:deploy-file -DgroupId=%4 -DartifactId=%5 -Dversion=%6 -DgeneratePom=true -Dpackaging=%8 -DrepositoryId=admin -Durl=%2 -Dfile=%7
    
    del %7
    

注意:-DrepositoryId=admin 是对 Maven 的 settings.xml 中服务器定义的引用,定义了要在目标存储库中发布的用户和密码。

例子:

set FROM=source repository URL
set TO=target repository URL

call publish.bat %FROM% %TO% net/xyz/webtools net.xyz.webtools buildServer 03.06.00.01 buildServer-03.06.00.01.war war
于 2018-01-17T09:18:02.950 回答