Podczas wdrażania artefaktu w moim własnym repozytorium na serwerze Nexus pojawia się błąd: „Nie udało się wdrożyć artefaktów: nie można przesłać artefaktu” „Nie udało się przesłać pliku http: /// moj_artefakt. Kod powrotu to: 400”
Mam Nexusa z jednym niestandardowym repozytorium my_repo z następną lokalną konfiguracją 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>
- użytkownik ma uprawnienia do tworzenia / odczytu / zapisu w 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>
a potem wykonuję
mvn deploy
i otrzymaj błąd. Dowolny pomysł?
maven
deployment
pom.xml
nexus
acymutalny
źródło
źródło
Odpowiedzi:
Kilka rzeczy, które przychodzą mi do głowy:
Sprawdź je, a jeśli nadal masz problemy, podaj więcej szczegółów tutaj.
źródło
Po prostu utwórz osobną odpowiedź. Odpowiedź znajduje się w komentarzu do zaakceptowanej odpowiedzi.
Spróbuj zmienić wersję swojego artefaktu na zakończenie
-SNAPSHOT
.źródło
400 złych żądań zostanie zwróconych, jeśli spróbujesz:
źródło
Przyczyną problemu dla mnie było to, że -source.jars był ładowany dwukrotnie (z wtyczką maven-source-plugin), jak wspomniano jako jeden z powodów w akceptowanej odpowiedzi. Przekierowanie, aby odpowiedzieć, że wspomniałem: Błąd wtyczki Maven: artefakty źródłowe są wdrażane dwukrotnie
źródło
Miałem dzisiaj dokładnie ten problem, a problem polegał na tym, że wersja, którą próbowałem wydać: perform, była już w repozytorium Nexusa.
W moim przypadku było to prawdopodobnie spowodowane rozłączeniem sieci podczas wcześniejszego wywołania wydania: perform. Mimo że straciłem połączenie, wydaje się, że wydanie się powiodło.
źródło
W rzadkich przypadkach, gdy musisz ponownie rozmieścić artefakt SAME STABILNY na Nexusie, domyślnie zakończy się niepowodzeniem. Jeśli następnie usuniesz artefakt z Nexusa (przez interfejs sieciowy) w celu jego ponownego wdrożenia, wdrożenie nadal się nie powiedzie, ponieważ samo usunięcie np. Jar lub pom nie wyczyści innych plików wciąż leżących w katalogu. Musisz zalogować się do skrzynki i całkowicie usunąć katalog.
źródło
content/vol-{01-43}/chap-{01-47}
Dzisiaj miałem ten sam problem z dodaniem „Kod zwrotny to: 400, ReasonPhrase: Złe żądanie”. który okazał się być "artefakt jest już wdrożony z tą wersją jeśli jest to wydanie" problem z odpowiedzi powyżej wpisz opis linku tutaj
Jednym z rozwiązań, o których jeszcze nie wspomniano, jest skonfigurowanie Nexusa, aby umożliwić ponowne wdrożenie do repozytorium wydania. Może nie jest to najlepsza praktyka, ponieważ jest to ustawione z jakiegoś powodu, mimo to możesz przejść do „Ustawień dostępu” na karcie „Konfiguracja” repozytoriów Nexusa i ustawić „Zasady wdrażania” na „Zezwalaj na ponowne rozmieszczenie”.
źródło
przykład: 0.0.1-SNAPSHOT
źródło
Upewnij się, że nie istnieje już (artefakt i wersja) w nexusie (jako wydanie). W takim przypadku zwróć Bad Request.
źródło
W przypadku błędu 400 sprawdź repozytorium „Zasady wdrażania”, zazwyczaj „Wyłącz ponowne wdrażanie”. W większości przypadków Twoja wersja biblioteki już tam jest, dlatego otrzymałeś komunikat „Nie można umieścić ' https: //yoururl/some.jar '. Otrzymano kod statusu 400 z serwera: Repozytorium nie zezwala na aktualizację zasobów:„ Twój nazwa repozytorium "
Masz więc kilka opcji rozwiązania tego problemu. 1- zezwól na ponowne rozmieszczenie 2- usuń wersję z repozytorium, które próbujesz załadować, 3- zmień numer wersji
źródło
Jeśli którakolwiek z powyższych odpowiedzi się sprawdziła, możesz utworzyć nowy artefakt bezpośrednio ze strony administratora (zrzut ekranu NEXUSA załączony poniżej).
Login to nexus
UI http: // TWÓJ_URL: 8081 / nexus (nazwa użytkownika: domyślne hasło administratora : admin123 )Click repositories
po lewej stronie, a następnie kliknij repozytorium, Na przykład: kliknij zwolnij.artifact Upload
(ostatnia karta).GAV definition
jakoGAV Param
- następnie wprowadź identyfikator grupy, identyfikator artefaktu i wersję.Teraz będziesz mógł dodać odpowiednie poprawki do swojego projektu. (Zrzut ekranu poniżej)
źródło
Może się to również zdarzyć, jeśli masz zasady nazewnictwa dotyczące wersji, zabraniające wersji #, którą próbujesz wdrożyć. W moim przypadku próbowałem wgrać wersję (do wydania repozytorium)
2.0.1
ale później okazało się, że nasza konfiguracja nexusa nie zezwala na wydanie niczego poza liczbą całkowitą.Próbowałem później z wersją
2
i pomyślnie ją wdrożyłem.Komunikat o błędzie zdecydowanie nie pomaga:
Mogłaby być lepsza wiadomość
version 2.0.1 violates naming policy
źródło
Identyfikator serwera powinien być zgodny z identyfikatorem repozytorium pliku maven settings.xml
źródło