如何备份所有 Nexus 3 工件?
How to backup all Nexus 3 artifacts?
我想知道如何将所有(不是一两个指定的)工件从 Nexus 3 存储库下载到本地磁盘。在 Nexus 2 中,这很容易,因为一切都存储在磁盘上,我只需将所有工件同步到我的本地磁盘。
但是在 Nexus 3 中,所有工件都存储在 OrientDB 中,我将不得不采取其他途径。在以某种方式获得完整列表后,我正在考虑通过 http 下载它们。
有人知道如何执行这样的导出吗?
您可以使用 REST-API 检索所有 DownloadURL,然后将它们全部下载。我用一个简单的 Python 脚本做到了这一点。
我修改了以下 groovy 脚本,可以使用 API 上传:https://gist.github.com/kellyrob99/2d1483828c5de0e41732327ded3ab224
要上传和执行脚本,我查看了示例:https://github.com/sonatype/nexus-book-examples/tree/nexus-3.x
我不得不将所有工件从一个 Nexus 3 存储库移动到另一个存储库。一旦这是偶然的,我开发了程序(Windows):
- 从 Nexus 的 Web 界面/浏览/资产中获取 JSON 资产列表
- 通过收集资产 "name" 属性的值提取资产的 URLs
- 删除所有 .md5、.sha1、maven-metadata.xml
的资产
- 删除所有 pom.xml 为另一个 atrifact
的资产
将神器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
可以使用 n3dr 从 Nexus3 存储库下载所有工件。
如果您在 Dockerfile 上看到版本升级,他们已经修改了基本应用程序的位置。
您需要将存储指向
/opt/sonatype/sonatype-work
来源:https://github.com/sonatype/docker-nexus3/blob/master/Dockerfile
我想知道如何将所有(不是一两个指定的)工件从 Nexus 3 存储库下载到本地磁盘。在 Nexus 2 中,这很容易,因为一切都存储在磁盘上,我只需将所有工件同步到我的本地磁盘。
但是在 Nexus 3 中,所有工件都存储在 OrientDB 中,我将不得不采取其他途径。在以某种方式获得完整列表后,我正在考虑通过 http 下载它们。
有人知道如何执行这样的导出吗?
您可以使用 REST-API 检索所有 DownloadURL,然后将它们全部下载。我用一个简单的 Python 脚本做到了这一点。
我修改了以下 groovy 脚本,可以使用 API 上传:https://gist.github.com/kellyrob99/2d1483828c5de0e41732327ded3ab224
要上传和执行脚本,我查看了示例:https://github.com/sonatype/nexus-book-examples/tree/nexus-3.x
我不得不将所有工件从一个 Nexus 3 存储库移动到另一个存储库。一旦这是偶然的,我开发了程序(Windows):
- 从 Nexus 的 Web 界面/浏览/资产中获取 JSON 资产列表
- 通过收集资产 "name" 属性的值提取资产的 URLs
- 删除所有 .md5、.sha1、maven-metadata.xml 的资产
- 删除所有 pom.xml 为另一个 atrifact 的资产
将神器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
可以使用 n3dr 从 Nexus3 存储库下载所有工件。
如果您在 Dockerfile 上看到版本升级,他们已经修改了基本应用程序的位置。 您需要将存储指向
/opt/sonatype/sonatype-work
来源:https://github.com/sonatype/docker-nexus3/blob/master/Dockerfile