web-dev-qa-db-fra.com

Erreur lors du déploiement d'un artefact dans Nexus

Une erreur s'est produite lors du déploiement d'un artefact dans mon propre référentiel sur un serveur Nexus: "Échec du déploiement d'artefacts: impossible de transférer l'artefact" "Échec du transfert du fichier http: /// mon_artifact. Le code de retour est: 400"

Nexus fonctionne avec un référentiel personnalisé, my_repo, avec la prochaine configuration locale 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>
  • l'utilisateur a le droit de créer/lire/écrire dans 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>

et puis j'exécute

mvn deploy

et obtenez l'erreur. Une idée?

84
acimutal

Quelques choses auxquelles je peux penser:

  • les informations d'identification de l'utilisateur sont incorrectes
  • l'URL au serveur est faux
  • l'utilisateur n'a pas accès au référentiel de déploiement
  • l'utilisateur n'a pas accès à la cible de référentiel spécifique
  • artefact est déjà déployé avec cette version s'il s'agit d'une version (pas -SNAPSHOT version)
  • le référentiel ne convient pas au déploiement de l'artefact correspondant (par exemple, relâchez le référentiel pour la version d'instantané, le référentiel proxy ou le groupe au lieu d'un référentiel hébergé)

Vérifiez ceux-ci et si vous rencontrez toujours des problèmes, fournissez plus de détails ici.

137
Manfred Moser

Juste pour créer une réponse séparée. La réponse se trouve réellement dans un commentaire pour la réponse acceptée.

Essayez de changer la version de votre artefact pour qu'elle se termine par -SNAPSHOT.

30
bhagyas

La cause du problème pour moi était -source.jars a été téléchargé deux fois (avec maven-source-plugin), ce qui est mentionné comme l'une des causes de la réponse acceptée. Redirection pour répondre à la question que j'ai citée: Le plug-in de publication Maven échoue: les artefacts source sont déployés deux fois

10
ankitkpd

J'ai eu ce problème exactement aujourd'hui et le problème était que la version que je tentais de publier: perform était déjà dans le dépôt Nexus.

Dans mon cas, cela était probablement dû à une déconnexion du réseau lors d'une précédente invocation de release: perform. Même si j'ai perdu ma connexion, il semble que la publication ait réussi.

7
eidolon1138

400 Bad Request sera retourné si vous essayez de:

  1. Déployer un artefact instantané (ou une version) se terminant par - SNAPSHOT dans un référentiel version
  2. Déployez un artefact version (version not se terminant par - SNAPSHOT ) sur un instantané référentiel
  3. Déployer la version identique d'un artefact version plusieurs fois dans un référentiel version
6
roj

Dans les rares cas où vous devrez redéployer l'artefact SAME STABLE sur Nexus, celui-ci échouera par défaut. Si vous supprimez ensuite l'artefact de Nexus (via l'interface Web) dans le but de le déployer à nouveau, le déploiement échouera tout de même, car il suffirait de supprimer le fichier par exemple. jar ou pom n'efface pas les autres fichiers encore présents dans le répertoire. Vous devez vous connecter à la boîte et supprimer le répertoire dans son intégralité.

6
bosvos
  • dans l'application pom parent ==> Version, placez la balise comme suit: x.x.x-SNAPSHOT

exemple: 0.0.1-SNAPSHOT

  • "-SNAPSHOT": est très important
3
Fadid

Assurez-vous que n'existe pas déjà (artefact et version) dans Nexus (en tant que version). Dans ce cas, renvoyez Bad Request.

2
danipenaperez

J'ai eu le même problème aujourd'hui avec l'ajout "Le code de retour est: 400, ReasonPhrase: Bad Request." problème qui se révèle être "l'artefact est déjà déployé avec cette version s'il s'agit d'une version" de la réponse ci-dessus entrez la description du lien ici

Une solution non encore mentionnée consiste à configurer Nexus pour permettre le redéploiement dans un référentiel de publication. Ce n’est peut-être pas une bonne pratique, car ceci est défini pour une raison, vous pouvez néanmoins accéder à "Paramètres d'accès" dans l'onglet "Configuration" de votre référentiel Nexus et définir la "Stratégie de déploiement" sur "Autoriser le redéploiement".

2
jonashackt

Si l’une des réponses ci-dessus est satisfaisante, vous pouvez créer un nouvel artefact directement à partir du côté administrateur de (Capture d’écran NEXUS ci-dessous).

  1. Login to nexus UI http: // YOUR_URL: 8081/nexus (nom d'utilisateur: admin mot de passe par défaut: admin123 )
  2. Click repositories sur le côté gauche puis cliquez sur le référentiel, par exemple: cliquez sur le bouton de libération.
  3. Choisissez artifact Upload (dernier onglet).
  4. Choisissez GAV definition comme GAV Param- Entrez ensuite votre identifiant de groupe, votre identifiant d'artefact et votre version.
  5. Choisissez le fichier Jar.
  6. Cliquez sur Télécharger l'artefact. C'est ça !

Vous pourrez maintenant ajouter le résultat correspondant dans votre projet. (Capture d'écran ci-dessous)

enter image description here

1
vipin cp

Cela peut également se produire si vous avez une stratégie de nommage autour de la version, interdisant la # version que vous essayez de déployer. Dans mon cas, j’essayais de télécharger une version (pour publier le repo) 2.0.1, mais j’ai découvert plus tard que notre configuration de lien ne permettait rien d’autre que le nombre entier pour les éditions.

J'ai essayé plus tard avec la version 2 et je l'ai déployé avec succès.

Le message d'erreur ne m'aide certainement pas:

Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases-xxx. -> [Help 1]

Un meilleur message aurait pu être version 2.0.1 violates naming policy

0
old-monk

Pour une erreur 400, vérifiez le référentiel "Politique de déploiement" généralement son "Désactiver le redéploiement". La plupart du temps, la version de votre bibliothèque est déjà présente, c’est pourquoi vous avez reçu le message "Impossible de mettre PUT" https: //votre URL/some.jar '. Le code d’état 400 reçu du serveur: le référentiel le fait pas autoriser la mise à jour des actifs: "votre nom de référentiel"

Donc, vous avez quelques options pour résoudre ce problème. 1- autoriser le redéploiement 2- supprimer la version de votre référentiel que vous essayez de télécharger 3- changer le numéro de version

0
Furqan