Mam projekt inny niż Java, który tworzy wersjonowany artefakt kompilacji i chcę przesłać go do repozytorium Nexusa. Ponieważ projekt nie jest Javą, nie używa Mavena do kompilacji. I wolałbym nie wprowadzać plików Maven / POM tylko po to, aby przenieść je do Nexusa.
Wszystkie linki na blogach do Nexus REST API kończą się na tablicy logowania, bez linku „utwórz użytkownika”, który widzę.
Jaki jest więc najlepszy (lub rozsądny) sposób przesyłania artefaktów kompilacji do repozytorium Nexusa bez Mavena? „bash + curl” byłby świetny, a nawet skrypt w Pythonie.
Odpowiedzi:
Czy rozważasz użycie wiersza poleceń Maven do przesyłania plików?
To automatycznie wygeneruje POM Mavena dla artefaktu.
Aktualizacja
Poniższy artykuł w Sonatype stwierdza, że wtyczka maven "deploy-file" jest najłatwiejszym rozwiązaniem, ale zawiera również kilka przykładów użycia curl:
https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-
źródło
Korzystanie z curl:
Możesz zobaczyć, co oznaczają parametry tutaj: https://support.sonatype.com/entries/22189106-How-can-I-programatically-upload-an-artifact-into-Nexus-
Aby nadać uprawnienia do tej pracy, utworzyłem nową rolę w GUI administratora i dodałem do tej roli dwa uprawnienia: Pobieranie artefaktów i Przesyłanie artefaktów. Standardowa rola „Repo: All Maven Repositories (Full Control)” nie wystarczy. Nie znajdziesz tego w dokumentacji interfejsu API REST, która jest dostarczana z serwerem Nexus, więc te parametry mogą ulec zmianie w przyszłości.
W kwestii Sonatype JIRA wspomniano, że w nadchodzącej wersji, najprawdopodobniej jeszcze w tym roku, „zamierzają odnowić REST API (i sposób generowania jego dokumentacji)”.
źródło
Nie ma potrzeby używania tych poleceń ... możesz bezpośrednio użyć interfejsu sieciowego Nexus, aby przesłać swój plik JAR przy użyciu parametrów GAV.
Więc to jest bardzo proste.
źródło
Artifact Upload
. Niestety, nie mogłem znaleźć niczego w dokumentach wspominających o tym ... (Edycja: widzę, Ed już to wskazałem )Możesz ABSOLUTNIE zrobić bez używania czegokolwiek związanego z MAVEN. Osobiście używam HttpClient NING (v1.8.16, do obsługi java6).
Z jakiegoś powodu Sonatype sprawia, że niezwykle trudno jest ustalić, jakie powinny być prawidłowe adresy URL, nagłówki i ładunki; i musiałem wąchać ruch i zgadywać ... Jest tam kilka mało przydatnych blogów / dokumentacji, jednak albo są one nieistotne
oss.sonatype.org
, albo są oparte na XML (i okazało się, że nawet nie działają). Bzdura z ich strony, IMHO i miejmy nadzieję, że przyszli poszukiwacze mogą uznać tę odpowiedź za przydatną. Wielkie dzięki dla https://stackoverflow.com/a/33414423/2101812 za ich post, ponieważ bardzo pomógł.Jeśli wydasz gdzieś indziej niż
oss.sonatype.org
, po prostu zastąp go jakimkolwiek właściwym hostem.Oto kod (na licencji CC0), który napisałem, aby to osiągnąć. Gdzie
profile
znajduje się identyfikator profilu sonatype / nexusa (taki jak4364f3bbaf163
) irepo
(taki jakcomdorkbox-1003
) są analizowane z odpowiedzi, gdy przesyłasz początkowy POM / słoik.Zamknij repozytorium:
Promuj repozytorium:
Upuść repozytorium:
Usuń sygnaturki:
Przesyłane pliki:
EDYCJA1:
Jak uzyskać aktywność / status repozytorium
źródło
Wywołania, które musisz wykonać na Nexusie, to wywołania REST API.
Wtyczka maven-nexus-plugin to wtyczka Maven, której możesz użyć do wykonywania tych połączeń. Możesz stworzyć fałszywy pom z niezbędnymi właściwościami i wykonywać te wywołania za pomocą wtyczki Maven.
Coś jak:
Zakładane rzeczy:
Ostatecznie wszystko to robi, to tworzenie wywołań REST w Nexusie. Istnieje pełny interfejs API Nexus REST, ale nie miałem szczęścia w znalezieniu dokumentacji, która nie jest za zaporą. Możesz włączyć tryb debugowania dla powyższej wtyczki i dowiedzieć się, jak to zrobić, używając
-Dnexus.verboseDebug=true -X
.Możesz również teoretycznie przejść do interfejsu użytkownika, włączyć panel Firebug Net i obserwować / obsługiwać posty POST i również tam wydedukować ścieżkę.
źródło
dla tych, którzy potrzebują go w Javie, używając apache httpcomponents 4.0:
źródło
W ruby https://github.com/RiotGames/nexus_cli Opakowanie CLI wokół wywołań Sonatype Nexus REST.
Przykład użycia:
Konfiguracja odbywa się za pośrednictwem
.nexus_cli
pliku.źródło
Możesz również użyć metody bezpośredniego wdrażania przy użyciu narzędzia curl. Nie potrzebujesz pom do swojego pliku, ale nie zostanie on również wygenerowany, więc jeśli chcesz, musisz przesłać go osobno.
Oto polecenie:
źródło
Jeśli potrzebujesz wygodnego interfejsu wiersza poleceń lub interfejsu API Pythona, spójrz na repositorytools
Używając go, możesz przesłać artefakt do nexusa za pomocą polecenia
Aby to działało, będziesz musiał również ustawić kilka zmiennych środowiskowych
źródło
Możesz ręcznie przesłać artefakt, klikając przycisk przesyłania artefaktów na serwerze Nexus i podać niezbędne właściwości GAV do przesłania (zazwyczaj jest to struktura pliku do przechowywania artefaktu)
źródło
Najnowsze wersje Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-files-into-Nexus-3-
Przykład dla wersji od 3.9.0 do 3.13.0:
źródło
@Adam Vandenberg Dla kodu Java do POST na Nexusie. https://github.com/manbalagan/nexusuploader
źródło
Zamiast tego możesz użyć curl.
źródło