I have the build definition which does Maven build. after the build I upload artifacts to nexus repository using nexus artifacts upload plugin.
From release definition is there any way to download the artifacts from nexus for my deployment?
If you are using nexus 2.x, you can use the REST API to download artifacts from nexus repo:
wget "http://local:8081/service/local/artifact/maven/redirect?g=com.mycompany&a=my-app&v=LATEST" --content-disposition
or
curl --insecure "https://local:8081/service/local/artifact/maven/content?r=public&g=log4j&a=log4j&v=1.2.17&p=jar&c=" > log4j.ja
If you are using nexus 3.x, you can use below ways to download artifacts from nexus repo:
Option 1: Use maven command
mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.1:copy -Dartifact=log4j:log4j:1.2.17:jar -DoutputDirectory=./
Option 2: use wget with bash script to download:
#!/bin/sh
repo="https://nexus.url.com"
groupId=$1
artifactId=$2
version=$3
# optional
classifier=$4
type=$5
if [[ $type == "" ]]; then
type="jar"
fi
if [[ $classifier != "" ]]; then
classifier="-${classifier}"
fi
groupIdUrl="${groupId//.//}"
filename="${artifactId}-${version}${classifier}.${type}"
if [[ ${version} == *"SNAPSHOT"* ]]; then repo_type="snapshots"; else repo_type="releases"; fi
if [[ $repo_type == "releases" ]]
then
wget --no-check-certificate "${repo}/repository/releases/${groupIdUrl}/${artifactId}/${version}/${artifactId}-${version}${classifier}.${type}" -O ${filename} -k
else
versionTimestamped=$(wget -q -O- --no-check-certificate "${repo}/repository/snapshots/${groupIdUrl}/${artifactId}/${version}/maven-metadata.xml" | grep -m 1 \<value\> | sed -e 's/<value>\(.*\)<\/value>/\1/' | sed -e 's/ //g')
wget --no-check-certificate "${repo}/repository/snapshots/${groupIdUrl}/${artifactId}/${version}/${artifactId}-${versionTimestamped}${classifier}.${type}" -O ${filename}
fi
ยดยดยด
usage
script.sh groupid artifactid version classifier type
ex:
script.sh log4j log4j 4.2.18 sources zip
script.sh log4j log4j 4.2.19 -> get jar as default
script.sh log4j log4j 4.2.19-SNAPSHOT -> get jar as default
More details, you can refer Fetching artifact programmatically through REST/API fro Nexus2/3.