сборка артефактов скачать с nexus в vts определение выпуска - PullRequest
0 голосов
/ 01 мая 2018

У меня есть определение сборки, которое строит Maven. после сборки я загружаю артефакты в хранилище nexus с помощью плагина загрузки артефактов nexus.

Из определения версии есть ли способ загрузить артефакты из Nexus для моего развертывания?

1 Ответ

0 голосов
/ 02 мая 2018

Если вы используете nexus 2.x , вы можете использовать REST API для загрузки артефактов из nexus repo:

wget "http://local:8081/service/local/artifact/maven/redirect?g=com.mycompany&a=my-app&v=LATEST" --content-disposition

или

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

Если вы используете nexus 3.x , вы можете использовать следующие способы загрузки артефактов из nexus repo:

  • Вариант 1: использовать команду maven

    mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.1:copy -Dartifact=log4j:log4j:1.2.17:jar -DoutputDirectory=./
    
  • Вариант 2: используйте wget со скриптом bash для загрузки:

    #!/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
    

Более подробно, вы можете сослаться на Программно получать артефакт через REST / API для Nexus2 / 3 .

...