如何备份所有Nexus 3工件?

时间:2017-09-28 10:41:37

标签: maven orientdb nexus3 n3dr

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

但是在Nexus 3中,所有工件都存储在OrientDB中,我将不得不采取其他途径。我想到了以某种方式获得完整列表后按http下载它们。

是否有人知道如何进行此类出口?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

一个人可以使用n3dr从Nexus3存储库中下载所有工件:

docker-compose.yml

version: '3.7'
services:
  n3dr:
    image: utrecht/n3dr:3.0.0
    volumes:
      - ~/.n3dr.yaml:/home/n3dr/.n3dr.yaml
      - ~/2019-05-20-nexus-fqdn:/download
    environment:
      - HTTPS_PROXY=some-proxy
    command: repositories -n some-nexus -u admin -d

如果运行docker-compose up,则将从所有Nexus3存储库中下载的工件。

答案 2 :(得分:-1)

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

答案 3 :(得分:-1)

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

  • 来自Nexus的网络界面/ Browse / Assets将JSON与资产列表相结合
  • 通过收集“name”属性
  • 的值来提取资产的网址
  • 删除所有资产.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