webentwicklung-frage-antwort-db.com.de

Fehler beim Bereitstellen eines Artefakts in Nexus

Beim Bereitstellen eines Artefakts in meinem eigenen Repository auf einem Nexus-Server wird ein Fehler angezeigt: "Fehler beim Bereitstellen von Artefakten: Artefakt konnte nicht übertragen werden" "Fehler beim Übertragen der Datei http: /// my_artifact. Rückkehrcode lautet: 400"

Ich habe Nexus mit einem benutzerdefinierten Repository my_repo mit der nächsten lokalen Maven-Konfiguration ausgeführt:

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>
  • benutzer hat Berechtigungen zum Erstellen/Lesen/Schreiben in 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>

und dann führe ich aus

mvn deploy

und erhalte den Fehler. Irgendeine Idee?

84
acimutal

Ein paar Dinge, an die ich denken kann:

  • benutzeranmeldeinformationen sind falsch
  • uRL zum Server ist falsch
  • der Benutzer hat keinen Zugriff auf das Implementierungsrepository
  • der Benutzer hat keinen Zugriff auf das bestimmte Repository-Ziel
  • artefakt wird bereits mit dieser Version bereitgestellt, wenn es sich um eine Version handelt (nicht -SNAPSHOT-Version)
  • das Repository ist nicht für die Bereitstellung des jeweiligen Artefakts geeignet (z. B. Release-Repo für Snapshot-Version, Proxy-Repo oder Gruppe anstelle eines gehosteten Repository).

Überprüfen Sie diese und geben Sie hier weitere Details an, falls Sie immer noch auf Probleme stoßen.

137
Manfred Moser

Nur um eine separate Antwort zu erstellen. Die Antwort befindet sich tatsächlich in einem Kommentar zur akzeptierten Antwort.

Versuchen Sie, die Version Ihres Artefakts so zu ändern, dass sie mit -SNAPSHOT Endet.

30
bhagyas

Grund für das Problem war für mich, dass -source.jars zweimal hochgeladen wurde (mit dem Maven-Source-Plugin), wie als eine der Ursachen in der akzeptierten Antwort erwähnt. Umleiten zu einer Antwort, auf die ich verwiesen habe: Maven-Release-Plugin schlägt fehl: Quellartefakte werden zweimal bereitgestellt

10
ankitkpd

Ich hatte heute genau dieses Problem und das Problem war, dass die Version, die ich veröffentlichen wollte: perform, bereits im Nexus-Repo enthalten war.

In meinem Fall war dies wahrscheinlich auf eine Netzwerkunterbrechung während eines früheren Aufrufs von release: perform zurückzuführen. Obwohl ich meine Verbindung verloren habe, scheint die Veröffentlichung erfolgreich zu sein.

7
eidolon1138

400 Bad Request wird zurückgegeben, wenn Sie versuchen:

  1. Stellen Sie ein Snapshot Artefakt (oder eine Version) mit der Endung - SNAPSHOT in einem Release Repository bereit
  2. Stellen Sie ein Release Artefakt (Version nicht mit der Endung - SNAPSHOT ) auf einem Momentaufnahme Repository
  3. Stellen Sie die gleiche Version eines Release Artefakts mehrmals in einem Release Repository bereit
6
roj

In dem seltenen Fall, dass Sie das SAME STABLE-Artefakt erneut auf Nexus bereitstellen müssen, schlägt dies standardmäßig fehl. Wenn Sie dann das Artefakt aus Nexus löschen (über die Webschnittstelle), um es erneut bereitzustellen, schlägt die Bereitstellung immer noch fehl, da nur das Entfernen der z. jar oder pom löscht keine anderen Dateien, die noch im Verzeichnis liegen. Sie müssen sich in der Box anmelden und das gesamte Verzeichnis löschen.

6
bosvos
  • in der übergeordneten POM-Anwendung ==> Version setzen Sie das Tag wie folgt: x.x.x-SNAPSHOT

beispiel: 0.0.1-SNAPSHOT

  • "-SNAPSHOT": ist sehr wichtig
3
Fadid

Stellen Sie sicher, dass es in Nexus (als Release) noch kein Artefakt und keine Version gibt. In diesem Fall geben Sie Bad Request zurück.

2
danipenaperez

Ich hatte heute das gleiche Problem mit dem Zusatz "Returncode ist: 400, ReasonPhrase: Bad Request". Es stellte sich heraus, dass das "Artefakt in dieser Version bereits implementiert ist, wenn es sich um ein Release handelt" -Problem aus der obigen Antwort . Geben Sie hier die Linkbeschreibung ein .

Eine noch nicht erwähnte Lösung besteht darin, Nexus so zu konfigurieren, dass eine erneute Bereitstellung in einem Release-Repository möglich ist. Möglicherweise nicht die beste Vorgehensweise, da dies aus einem bestimmten Grund festgelegt wurde. Sie können jedoch in der Registerkarte "Konfiguration" Ihres Nexus-Repositorys unter "Zugriffseinstellungen" die Option "Bereitstellungsrichtlinie" auf "Erneutes Bereitstellen zulassen" festlegen.

2
jonashackt

Wenn eine der obigen Antworten geklappt hat, können Sie ein neues Artefakt direkt von der Administratorseite aus erstellen (NEXUS-Screenshot unten).

  1. Login to nexus UI http: // YOUR_URL: 8081/nexus (Benutzername: admin Standardpasswort: admin123 )
  2. Click repositories Klicken Sie auf der linken Seite auf das Repo. Zum Beispiel: Klicken Sie auf Release.
  3. Wählen artifact Upload (letzter Reiter).
  4. Wählen GAV definition wie GAV Param- Geben Sie dann Ihre Gruppen-ID, Artefakt-ID und Version ein.
  5. Wählen Sie Jar-Datei.
  6. Klicken Sie auf Artefakt hochladen. Das ist es !

Jetzt können Sie die entsprechenden Elemente in Ihr Projekt einfügen (Abbildung unten).

enter image description here

1
vipin cp

Dies kann auch passieren, wenn Sie eine Namensrichtlinie für die Version haben, die die Version # verbietet, die Sie bereitstellen möchten. In meinem Fall habe ich versucht, eine Version hochzuladen (um das Repo freizugeben) 2.0.1, Aber später herausgefunden, dass unsere Nexus-Konfiguration nichts anderes als eine ganze Zahl für Releases zulässt.

Ich habe es später mit Version 2 Versucht und es erfolgreich implementiert.

Die Fehlermeldung hilft definitiv nicht weiter:

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

Eine bessere Nachricht hätte sein können version 2.0.1 violates naming policy

0
old-monk

Überprüfen Sie für 400 Fehler das Repository "Bereitstellungsrichtlinie" in der Regel "Erneutes Bereitstellen deaktivieren". In den meisten Fällen ist Ihre Bibliotheksversion bereits vorhanden. Aus diesem Grund haben Sie die Meldung "Konnte ' https: //yoururl/some.jar ' nicht setzen. Statuscode 400 vom Server erhalten: Repository Aktualisieren von Assets nicht zulassen: "Name Ihres Repositorys"

Sie haben also einige Möglichkeiten, dies zu beheben. 1- Ermöglichen Sie die erneute Bereitstellung 2- Löschen Sie die Version aus Ihrem Repository, die Sie hochladen möchten 3- Ändern Sie die Versionsnummer

0
Furqan