Beim Bereitstellen eines Artefakts in meinem eigenen Repository auf einem Nexus-Server wird eine Fehlermeldung angezeigt: "Fehler beim Bereitstellen von Artefakten: Artefakt konnte nicht übertragen werden" "Fehler beim Übertragen der Datei http: /// my_artifact. Rückgabecode ist: 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 den Fehler bekommen. Irgendeine Idee?
maven
deployment
pom.xml
nexus
acimutal
quelle
quelle
Antworten:
Ein paar Dinge, an die ich denken kann:
Überprüfen Sie diese und geben Sie hier weitere Details an, wenn Sie immer noch auf Probleme stoßen.
quelle
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 zu ändern, um damit zu enden
-SNAPSHOT
.quelle
400 Bad Request wird zurückgegeben, wenn Sie versuchen:
quelle
Ursache des Problems war für mich, dass -source.jars zweimal hochgeladen wurde (mit dem Maven-Source-Plugin), was als eine der Ursachen in der akzeptierten Antwort angegeben wurde. Umleitung zur Beantwortung der von mir genannten Antwort: Maven-Release-Plugin schlägt fehl: Quellartefakte werden zweimal bereitgestellt
quelle
Ich hatte heute genau dieses Problem und das Problem war, dass die Version, die ich veröffentlichen wollte: perform bereits im Nexus-Repo 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.
quelle
In dem seltenen Fall, dass Sie das Artefakt SAME STABLE erneut für Nexus bereitstellen müssen, schlägt dies standardmäßig fehl. Wenn Sie dann das Artefakt aus Nexus (über die Weboberfläche) löschen, um es erneut bereitzustellen, schlägt die Bereitstellung weiterhin fehl, da durch das Entfernen von z. B. jar oder pom keine anderen Dateien gelöscht werden, die noch im Verzeichnis liegen. Sie müssen sich bei der Box anmelden und das Verzeichnis vollständig löschen.
quelle
content/vol-{01-43}/chap-{01-47}
Ich hatte heute das gleiche Problem mit dem Zusatz "Rückkehrcode ist: 400, ReasonPhrase: Bad Request". Es stellte sich heraus, dass das Problem "Artefakt wird bereits mit dieser Version bereitgestellt, wenn es sich um eine Version handelt" aus der obigen Antwort die Linkbeschreibung hier eingeben
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 keine bewährte Methode, da dies aus einem bestimmten Grund festgelegt ist. Sie können jedoch in der Registerkarte "Konfiguration" Ihres Nexus-Repositorys zu "Zugriffseinstellungen" gehen und die "Bereitstellungsrichtlinie" auf "Erneutes Bereitstellen zulassen" setzen.
quelle
Beispiel: 0.0.1-SNAPSHOT
quelle
Stellen Sie sicher, dass nicht bereits (Artefakt und Version) im Nexus (als Release) vorhanden ist. In diesem Fall geben Sie Bad Request zurück.
quelle
Überprüfen Sie bei 400-Fehlern das Repository "Bereitstellungsrichtlinie", normalerweise "Neubereitstellung deaktivieren". Meistens ist Ihre Bibliotheksversion bereits vorhanden, weshalb Sie die Meldung "PUT put konnte nicht eingegeben werden" erhalten haben. Fällen https: //yoururl/some.jar eingegeben werden . Der Statuscode 400 wurde vom Server empfangen: Das Repository erlaubt keine Aktualisierung von Assets:" erhalten Repository-Name "
Sie haben also einige Möglichkeiten, dies zu beheben. 1- Erneutes Bereitstellen zulassen 2- Löschen der Version aus Ihrem Repository, das Sie hochladen möchten 3- Ändern der Versionsnummer
quelle
Wenn eine der oben genannten Antworten geklappt hat, können Sie ein neues Artefakt direkt von der Administratorseite von erstellen (NEXUS-Screenshot unten beigefügt).
Login to nexus
Benutzeroberfläche http: // YOUR_URL: 8081 / nexus (Benutzername: admin Standardkennwort: admin123 )Click repositories
Klicken Sie dann auf der linken Seite auf das Repo. Zum Beispiel: Klicken Sie auf Freigeben.artifact Upload
(letzte Registerkarte).GAV definition
alsGAV Param
- Geben Sie dann Ihre Gruppen-ID, Artefakt-ID und Version ein.Jetzt können Sie das entsprechende Element in Ihr Projekt einfügen (Screenshot unten).
quelle
Dies kann auch passieren, wenn Sie eine Namensrichtlinie für die Version haben, die die Versionsnummer verbietet, die Sie bereitstellen möchten. In meinem Fall habe ich versucht, eine Version hochzuladen (um 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 der Version versucht
2
und sie erfolgreich bereitgestellt.Die Fehlermeldung hilft definitiv nicht:
Eine bessere Nachricht hätte sein können
version 2.0.1 violates naming policy
quelle
Die Server-ID sollte mit der Repository-ID von maven settings.xml übereinstimmen
quelle