Importez par lots le répertoire de la bibliothèque locale de Maven dans l'analyse de script Nexus

Comment importer des jars et importer par lots le répertoire de la bibliothèque locale de Maven dans Nexus Cet article explique comment utiliser des scripts pour importer par lots toutes les dépendances du répertoire de la bibliothèque locale de Maven sur le serveur privé Nexus. De nombreux étudiants ont signalé qu'ils ne comprenaient pas le contenu du script. Cet article analysera les scripts importés par lots.

révision du scénario

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; do
   case $opt in
   	r) REPO_URL="$OPTARG"
   	;;
   	u) USERNAME="$OPTARG"
   	;;
   	p) PASSWORD="$OPTARG"
   	;;
   esac
done

find . -type f -not -path './mvnimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

Analyse du scénario - section1

Il s'agit d'un script B Shell, qui peut être exécuté directement sous Linux, et peut être exécuté à l'aide de Git Bash sous Windows.

  • Les quatre premières lignes commencent par un signe dièse ( #), qui est le contenu du commentaire
  • getopts ":r:u:p:" optest la valeur de l'option pour obtenir la ligne de commande
  • ":r:u:p:"Le premier deux-points signifie qu'aucune erreur ne sera signalée lorsqu'il y a des paramètres qui ne sont pas dans la chaîne optstring sur la ligne de commande. Les deux-points après le nom de l'option indiquent que l'option transmettra une valeur. Par exemple, le paramètre d'option dans la r:commande la ligne est-r rvalue
  • while doneest une boucle dans le script shell
  • case in esac est un fork de Shell Script
  • La valeur de l'option obtenue sera mise dans $OPTARG"
while getopts ":r:u:p:" opt; do
   case $opt in
   	r) REPO_URL="$OPTARG"
   	;;
   	u) USERNAME="$OPTARG"
   	;;
   	p) PASSWORD="$OPTARG"
   	;;
   esac
done

Pris ensemble, le sens du script ci-dessus est :
pour obtenir les valeurs des trois options dans la ligne de commande r u p . Il est clair de voir comment passer les valeurs d'option lorsque la ligne de commande est appelée,
-u admin -p yourpassword -r http://localhost:8081/repository/maven-releases/
c'est-à-dire pour obtenir respectivement l'adresse, le nom d'utilisateur et le mot de passe de la bibliothèque Nexus dans les variables REPO_URL, USERNAME et PASSWORD.

Analyse du scénario - section2

find . -type f -not -path './mvnimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml'

La commande find trouve une liste de fichiers dans le répertoire courant (y compris les sous-répertoires) qui répondent aux conditions spécifiées. Cette commande filtrera les fichiers cachés, les fichiers commençant par . et certains fichiers spécifiques spécifiés.

Voici ce que chaque partie de la commande signifie :

. : Spécifie de rechercher dans le répertoire courant.
-type f : indique que seuls les fichiers ordinaires sont recherchés, à l'exclusion des répertoires et autres fichiers spéciaux.
-not -path './mavenimport.sh*' : Indique qu'il ne correspond à aucun fichier ou répertoire nommé "mavenimport.sh", cette partie utilise -not et -path pour exclure tout fichier nommé "mavenimport.sh" ou répertoire .
-not -path ' /. ' : indique que les fichiers cachés commençant par "." ne correspondent pas. Cette section utilise -not et -path pour exclure tout chemin de fichier commençant par une barre oblique suivie d'un point (par exemple "/.git").
-not -path ' /^archetype-catalog.xml ' : signifie ne correspond à aucun fichier ou répertoire nommé "archetype-catalog.xml". Le but de l'utilisation de -not et -path dans cette section est d'exclure tout fichier ou répertoire portant le nom de fichier "archetype-catalog.xml".
-not -path ' /^maven-metadata-local .xml' : signifie qu'il ne correspond à aucun fichier ou répertoire nommé "maven-metadata-local.xml". Cette section utilise -not et -path pour exclure tout fichier ou répertoire portant le nom de fichier "maven-metadata-local.xml".
-not -path ' /^maven-metadata-deployment.xml' : indique qu'aucun fichier ou répertoire nommé "maven-metadata-deployment.xml" n'a été trouvé. Cette section utilise -not et -path pour exclure tout fichier ou répertoire portant le nom de fichier "maven-metadata-deployment.xml".
En résumé, cette commande trouvera tous les fichiers normaux à l'exception des fichiers cachés commençant par "." et de certains fichiers spécifiques qui ne se trouvent pas dans le répertoire courant.

Analyse du scénario - section3

| sed "s|^\./||" 
  • La barre verticale |est le nom du canal et la sortie de la commande précédente est utilisée comme entrée de la commande suivante.
    La commande sed ici est utilisée pour supprimer le "./" dans le préfixe du nom du chemin. Il convient à la sortie sous forme de liste de fichiers ou au traitement de fichiers dans le répertoire actuel.

Dans cette commande, sed est l'outil de substitution de texte, s indique le début de l'opération de substitution et | indique le délimiteur qui entoure toutes les parties de l'opération de substitution. Chaque ligne de commande se termine par |. Par exemple, ^./ signifie rechercher le texte à remplacer depuis le début, c'est-à-dire ./, et le supprimer.

Ainsi, s'il existe une liste de fichiers avec des chemins relatifs ./ devant les noms de fichiers, utilisez la commande suivante pour supprimer le préfixe de nom de chemin ./ devant tous les noms de fichiers :

Copier le code

sed "s|^./||" filelist
Cela affichera une liste de noms de fichiers sans préfixes de chemin.

./antlr/antlr/2.7.2/antlr-2.7.2.jar
=》
antlr/antlr/2.7.2/antlr-2.7.2.jar

Analyse du scénario - section4

| xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} 

Il s'agit d'une commande curl pour télécharger plusieurs fichiers locaux dans un référentiel distant. Cette commande utilise également la commande xargs pour transmettre la sortie en tant qu'argument à la commande curl.

Voici ce que chaque partie de la commande signifie :

xargs -I '{}' : utilise la sortie de la commande précédente comme paramètre de la commande suivante, et -I '{}' spécifie l'espace réservé.
curl : utilisé pour envoyer des requêtes HTTP.
-u " NOM D'UTILISATEUR : NOM D'UTILISATEUR :U SERN A ME: PASSWORD" : spécifiez les identifiants d'authentification, où $USERNAME et $PASSWORD sont des variables permettant d'enregistrer le nom d'utilisateur et le mot de passe.
-X PUT : spécifiez la méthode de requête HTTP en tant que PUT, qui est utilisée pour télécharger des fichiers vers l'entrepôt distant.
-v : Activer le mode verbeux, vous pouvez afficher les détails de la requête et de la réponse envoyées et reçues par la commande.
-T {} : Spécifiez le chemin du fichier téléchargé, {} comme espace réservé, remplacé par le chemin du fichier réel par les xargs REPURL
/ : spécifiez l'emplacement distant du fichier téléchargé Chemin de l'URL de l'entrepôt, {REPO_URL}/{} : spécifiez le chemin de l'URL de l'entrepôt distant pour le téléchargement des fichiers,RÉP OTuR L /:Spécifiez le chemin d'URL de l'entrepôt distant pour le téléchargement des fichiers . { REPO_URL } est une variable qui stocke l'URL de l'entrepôt.
En résumé, cette commande trouvera tous les fichiers dans le répertoire actuel et utilisera la commande curl pour télécharger les fichiers vers le chemin d'accès de l'entrepôt distant spécifié. Authentifiez-vous avec le nom d'utilisateur et le mot de passe spécifiés lors du téléchargement jusqu'à ce que tous les fichiers aient été téléchargés.



Je suppose que tu aimes

Origine blog.csdn.net/oscar999/article/details/131446832
conseillé
Classement