I had to do move all artifacts from one Nexus 3 repository to another one. Once this was accidental, I developed the procedure (Windows):
- from Nexus' web interface / Browse / Assets took the JSON with the list of assets
- extracted the assets' URLs by collecting the values of their "name" attribute
- delete all assets that are .md5, .sha1, maven-metadata.xml
- delete all assets that are pom.xml for another atrifact
split the artifact URLS into
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
for each such parsed URL call the script (named 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
NOTE: -DrepositoryId=admin is a reference to a server definition in the Maven's settings.xml defining the user and password to publish in the target repository.
Example:
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