Recibo un error al implementar un artefacto en mi propio repositorio en un servidor Nexus: "Error al implementar artefactos: No se pudo transferir el artefacto" "Error al transferir el archivo http: /// my_artifact. El código de retorno es: 400"
Tengo Nexus ejecutándose con un repositorio personalizado my_repo con la siguiente configuración local de maven:
settings.xml
<server>
<id>my_repo</id>
<username>user</username>
<password>pass</password>
</server>
...
<mirror>
<id>my_repo</id>
<name>Repo Mirror</name>
<url><my_url_to_my_repo></url>
<mirrorOf>*</mirrorOf>
</mirror>
- el usuario tiene permisos para crear / leer / escribir en my_repo -
pom.xml
<distributionManagement>
<repository>
<id>my_repo</id>
<name>my_repo</name>
<url><my_url_to_my_repo></url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots</name>
<url><my_url_to_my_snapshot_repo></url>
</snapshotRepository>
</distributionManagement>
y luego ejecuto
mvn deploy
y obtienes el error. ¿Alguna idea?
maven
deployment
pom.xml
nexus
acimutal
fuente
fuente
Respuestas:
Un par de cosas en las que puedo pensar:
Compruébelos y si aún tiene problemas, proporcione más detalles aquí.
fuente
Solo para crear una respuesta separada. En realidad, la respuesta se encuentra en un comentario para la respuesta aceptada.
Intente cambiar la versión de su artefacto para terminar
-SNAPSHOT
.fuente
400 Bad Request se devolverá si intenta:
fuente
La causa del problema para mí fue -source.jars se estaba cargando dos veces (con maven-source-plugin) como se menciona como una de las causas en la respuesta aceptada. Redirigiendo para responder que me referí: el complemento de lanzamiento de Maven falla: los artefactos de origen se implementan dos veces
fuente
Hoy tuve este problema exacto y el problema fue que la versión que estaba tratando de lanzar: realizar ya estaba en el repositorio de Nexus.
En mi caso, esto probablemente se debió a una desconexión de la red durante una invocación anterior de release: perform. Aunque perdí mi conexión, parece que el lanzamiento se realizó correctamente.
fuente
En el raro caso de que necesite volver a implementar el artefacto MISMO ESTABLE en Nexus, fallará de forma predeterminada. Si luego elimina el artefacto de Nexus (a través de la interfaz web) con el propósito de implementarlo nuevamente, la implementación aún fallará, ya que simplemente eliminar el, por ejemplo, jar o pom no borra otros archivos que aún están en el directorio. Debe iniciar sesión en el cuadro y eliminar el directorio en su totalidad.
fuente
content/vol-{01-43}/chap-{01-47}
Hoy tuve el mismo problema con la adición "El código de retorno es: 400, ReasonPhrase: Bad Request". que resultó ser el problema "el artefacto ya está implementado con esa versión si es una versión" de la respuesta anterior ingrese la descripción del enlace aquí
Una solución que aún no se menciona es configurar Nexus para permitir la redistribución en un repositorio de versiones. Tal vez no sea una buena práctica, porque esto se establece por una razón, sin embargo, puede ir a "Configuración de acceso" en la pestaña "Configuración" de sus repositorios Nexus y establecer la "Política de implementación" en "Permitir redespliegue".
fuente
ejemplo: 0.0.1-SNAPSHOT
fuente
Asegúrese de que no exista ya (artefacto y versión) en nexus (como lanzamiento). En ese caso, devuelva Bad Request.
fuente
Para el error 400, consulte la "Política de implementación" del repositorio, por lo general, es "Desactivar redespliegue". La mayoría de las veces, la versión de su biblioteca ya está allí, por eso recibió un mensaje "No se pudo poner ' https: //yoururl/some.jar '. Se recibió el código de estado 400 del servidor: el repositorio no permite actualizar los activos:" su nombre del repositorio "
Entonces, tiene algunas opciones para resolver esto. 1- Permitir volver a implementar 2- Eliminar la versión de su repositorio que está intentando cargar 3- Cambiar el número de versión
fuente
Si alguna de las respuestas anteriores funcionó, puede crear un nuevo artefacto directamente desde el lado de administración de (Captura de pantalla de NEXUS adjunta a continuación).
Login to nexus
UI http: // YOUR_URL: 8081 / nexus (nombre de usuario: contraseña predeterminada del administrador : admin123 )Click repositories
en el lado izquierdo y luego haga clic en el repositorio, por ejemplo: haga clic en liberar.artifact Upload
(última pestaña).GAV definition
comoGAV Param
: luego ingrese su ID de grupo, ID de artefacto y versión.Ahora podrá agregar la correspondencia en su proyecto. (Captura de pantalla a continuación)
fuente
Esto también puede suceder si tiene una política de nomenclatura en torno a la versión, que prohíbe el número de versión que está intentando implementar. En mi caso, estaba intentando cargar una versión (para liberar el repositorio)
2.0.1
pero luego descubrí que nuestra configuración de nexo no permite nada más que un número entero para las versiones.Intenté más tarde con la versión
2
y la implementé con éxito.El mensaje de error definitivamente no ayuda:
Un mejor mensaje podría haber sido
version 2.0.1 violates naming policy
fuente
La identificación del servidor debe coincidir con la identificación del repositorio de maven settings.xml
fuente