Importación por lotes del directorio de la biblioteca local de Maven al análisis de secuencias de comandos de Nexus

Cómo importar archivos jar e importar por lotes el directorio de la biblioteca local de Maven en Nexus Este artículo presenta cómo usar scripts para importar por lotes todas las dependencias del directorio de la biblioteca local de Maven al servidor privado de Nexus. Muchos estudiantes informaron que no podían entender el contenido de la secuencia de comandos. Este artículo analizará las secuencias de comandos importadas en lotes.

revisión del guión

#!/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}/{} ;

Análisis del guión - sección 1

Este es un script B Shell, que se puede ejecutar directamente en Linux y se puede ejecutar con la ayuda de Git Bash en Windows.

  • Las primeras cuatro líneas comienzan con un signo de almohadilla ( #), que es el contenido del comentario.
  • getopts ":r:u:p:" optes el valor de la opción para obtener la línea de comando
  • ":r:u:p:"Los primeros dos puntos significan que no se solicitará ningún error cuando haya parámetros que no estén en la cadena de opción en la línea de comando. Los dos puntos después del nombre de la opción indican que la opción pasará un valor. Por ejemplo, la configuración de la opción en el r:comando la línea es-r rvalue
  • while donees un bucle en el script de shell
  • case in esac es una bifurcación de Shell Script
  • El valor de la opción obtenida se pondrá en $OPTARG"
while getopts ":r:u:p:" opt; do
   case $opt in
   	r) REPO_URL="$OPTARG"
   	;;
   	u) USERNAME="$OPTARG"
   	;;
   	p) PASSWORD="$OPTARG"
   	;;
   esac
done

En conjunto, el significado del script anterior es:
obtener los valores de las tres opciones en la línea de comando.Es r u p claro ver la forma de pasar los valores de las opciones cuando se llama a la línea de comando,
-u admin -p yourpassword -r http://localhost:8081/repository/maven-releases/
es decir, para obtener la dirección de la biblioteca Nexus, el nombre de usuario y la contraseña, respectivamente, en las variables REPO_URL, USERNAME y PASSWORD.

Análisis del guión - sección 2

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'

El comando de búsqueda encuentra una lista de archivos en el directorio actual (incluidos los subdirectorios) que cumplen las condiciones especificadas. Este comando filtrará los archivos ocultos, los archivos que comiencen con . y algunos archivos específicos especificados.

Esto es lo que significa cada parte del comando:

.: Especifica buscar en el directorio actual.
-tipo f: Indica que solo se buscan archivos ordinarios, excluyendo directorios y otros archivos especiales.
-not -path './mavenimport.sh*': Indica que no coincide con ningún archivo o directorio llamado "mavenimport.sh", esta sección usa -not y -path para excluir cualquier archivo llamado "mavenimport.sh" o directorio .
-not -path ' /. ': indica que los archivos ocultos que comienzan con "." no coinciden. Esta sección usa -not y -path para excluir cualquier ruta de archivo que comience con una barra inclinada seguida de un punto (por ejemplo, "/.git").
-not -path ' /^archetype-catalog.xml ': significa que no coincide con ningún archivo o directorio llamado "archetype-catalog.xml". El propósito de usar -not y -path en esta sección es excluir cualquier archivo o directorio con el nombre de archivo "archetype-catalog.xml".
-not -path ' /^maven-metadata-local .xml': significa que no coincide con ningún archivo o directorio llamado "maven-metadata-local.xml". Esta sección usa -not y -path para excluir cualquier archivo o directorio con el nombre de archivo "maven-metadata-local.xml".
-not -path ' /^maven-metadata-despliegue.xml': indica que ningún archivo o directorio con el nombre "maven-metadata-deployment.xml" coincidió. Esta sección usa -not y -path para excluir cualquier archivo o directorio con el nombre de archivo "maven-metadata-deployment.xml".
En resumen, este comando encontrará todos los archivos normales excepto los archivos ocultos que comienzan con "." y algunos archivos específicos que no están en el directorio actual.

Análisis del guión - sección 3

| sed "s|^\./||" 
  • La barra vertical |es el nombre de la tubería, y la salida del comando anterior se usa como entrada del siguiente comando.
    El comando sed aquí se usa para eliminar el "./" en el prefijo del nombre de la ruta. Es adecuado para generar una lista de archivos o procesar archivos en el directorio actual.

En este comando, sed es la herramienta para la sustitución de texto, s indica el inicio de la operación de sustitución y | indica el delimitador, que rodea todas las partes de la operación de sustitución. Cada línea de comando termina con |. Por ejemplo, ^./ significa encontrar el texto que se va a reemplazar desde el principio, es decir, ./, y eliminarlo.

Por lo tanto, si hay una lista de archivos con rutas relativas ./ delante de los nombres de archivo, use el siguiente comando para eliminar el prefijo ./ del nombre de la ruta delante de todos los nombres de archivo:

Copiar código

sed "s|^./||" lista de archivos
Esto generará una lista de nombres de archivo sin prefijos de nombre de ruta.

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

Análisis del guión - sección 4

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

Este es un comando curl para cargar múltiples archivos locales a un repositorio remoto. Este comando también usa el comando xargs para pasar la salida como argumento al comando curl.

Esto es lo que significa cada parte del comando:

xargs -I '{}': usa la salida del comando anterior como parámetro del siguiente comando, y -I '{}' especifica el marcador de posición.
curl: se utiliza para enviar solicitudes HTTP.
-u " NOMBRE DE USUARIO: NOMBRE DE USUARIO:USUARIO YO _ _: CONTRASEÑA": especifique las credenciales de autenticación, donde $NOMBRE DE USUARIO y $CONTRASEÑA son variables para guardar el nombre de usuario y la contraseña.
-X PUT: especifique el método de solicitud HTTP como PUT, que se utiliza para cargar archivos en el almacén remoto.
-v : habilite el modo detallado, puede ver los detalles de la solicitud y la respuesta enviada y recibida por el comando.
-T {}: especifique la ruta del archivo cargado, {} como marcador de posición, reemplazado por la ruta real del archivo por los xargs REPURL
/ : especifique la ubicación remota de la ruta URL del almacén del archivo cargado, {REPO_URL}/{}: especifique la ruta URL del almacén remoto para cargar archivos,REP OtuR L /:Especifique la ruta URL del almacén remoto para cargar archivos . { REPO_URL } es una variable que almacena la URL del almacén.
En resumen, este comando encontrará todos los archivos en el directorio actual y utilizará el comando curl para cargar los archivos en la ruta de almacenamiento remota especificada. Autentíquese con el nombre de usuario y la contraseña especificados al cargar hasta que se hayan cargado todos los archivos.



Supongo que te gusta

Origin blog.csdn.net/oscar999/article/details/131446832
Recomendado
Clasificación