deploy maven hudson jenkins nexus sonatype

deploy - Evitar que Jenkins instale Artifact en el repositorio local de Maven



artifactory jenkins (4)

Es el objetivo de instalación que se publica en el repositorio local ... Así que no tengo respuesta para el primer problema.

El segundo problema se puede resolver aislando cada compilación. Configúrelos para usar sus propios repositorios locales para que los errores en uno no afecten a los demás:

mvn -s settings.xml compile package

En el archivo de configuración, declare una ruta única para el repositorio local del trabajo de compilación

<settings> <localRepository>/data/job1/repository</localRepository> ..

Y es probable que sea una buena idea purgar periódicamente los repositorios locales, forzando compilaciones limpias.

Jenkins está instalando el artefacto construido más recientemente en el repositorio Maven local, incluso cuando el trabajo se ejecuta con el objetivo de solo clean package .

Esto causó un problema cuando alguien accidentalmente cometió una versión actualizada de una biblioteca compartida sin incrementar el número de versión en el POM de la biblioteca. Jenkins construyó el contenedor, lo instaló en el repositorio Maven local y luego (tal como se configuró) implementó el artefacto en nuestro repositorio Nexus compartido. Nexus con toda razón se niega a aceptar el nuevo artefacto, ya que ya tiene un lanzamiento con el número de versión proporcionado.

Algún tiempo después, Jenkins construye un proyecto que depende de esa biblioteca, y usa la copia de la biblioteca de su repositorio Maven local en lugar de Nexus. Por lo tanto, el proyecto se construyó con la versión incorrecta del código.

Parece que hay dos soluciones posibles:

  1. Detener a Jenkins al instalar erróneamente el .jar en el repositorio local
  2. Impedir que se use el repositorio local al construir proyectos que dependen de la biblioteca

Hay una configuración en la configuración de trabajo de Jenkins para usar un repositorio privado. De esta forma, puede evitar que los artefactos de su compilación de Jenkins lleguen a su repositorio principal. Necesita abrir las opciones extendidas para la construcción de Maven para ver la opción.


Me pregunto si existe una opción para usar realmente el repositorio local (compartido) pero dejar de escribir en él (es decir, implementar los artefactos solo en el repositorio remoto). Esto es para reducir el número de actualizaciones simultáneas (pero aún así mantener el uso del disco)


Puede evitar el despliegue de artefactos duplicados en Nexus. Cada artefacto debe tener un número de compilación adjunto para evitar confusiones. Evite las versiones de SNAPSHOT porque causan dolores de cabeza.