2013-04-03 8 views
16

Ostatnio wiele się nauczyłem o Mavenie i jestem pod wielkim wrażeniem. Gdzie mogę znaleźć informacje o komunikowaniu się, wdrażaniu i pobieraniu z repozytorium w taki sam sposób, jak robi to Maven? Czy odbywa się to za pośrednictwem opublikowanego protokołu?Co to jest protokół repozytorium maven?

Znalazłem informacje na temat OSGI (i OBR), ale nie mogę stwierdzić, czy to jest to, co powinienem zaglądać.

Chciałbym to zrobić w .net (z jakiegokolwiek powodu). Nie mam nic przeciwko przeglądaniu kodu źródłowego javy, jeśli ktoś mógłby wskazać mi właściwy komponent, ale wolałbym raczej wskazać specyfikacje protokołu.

[Edycja] Widzę wiele odpowiedzi dotyczących HTTP. Chciałbym dalej wyjaśnić, że nie szukam protokołu transferu, szukam protokołu API. Na przykład protokół Simple Object Access Protocol (SOAP) używa protokołu Hyper Text Transfer Protocol do przesyłania wiadomości. Jaki jest protokół dostępu dla Maven?

+0

nie jestem w 100% pewien, ale myślę, że to po prostu HTTP GET i POST. –

+0

Nie widzę, jak OSGi jest w ogóle spokrewniony. W każdym razie zauważ, że istnieje kilka projektów, które używają repozytoriów Maven, takich jak Gradle, Ivy i tak dalej. –

+0

Nie jest to bezpośrednio związane z twoim pytaniem, ale FYI odnieśliśmy bardzo dobry sukces, wykorzystując Mavena do budowania projektów w języku C# za pomocą sonvera maven-dotnet-plugin (z codehaus.org). Pomyślałem, że wyrzucę to, odkąd wspomniałeś .NET i Maven. – Allan

Odpowiedz

13

Jako że Khmajraise już powiedział, że protokół przesyłania jest w większości przypadków http (s), ale istnieją inne dostępne protokoły, np. prosty dostęp do plików dla lokalnych repozytoriów, WebDAV, SCP, SFTP i tak dalej. Repozytorium maven jest bardziej specjalnym układem katalogów. Istnieją serwery takie jak Nexus lub Artifactory, które oferują dodatkową funkcjonalność, taką jak pośredniczenie w zdalnych repozytoriach lub pewne sprawdzenia, takie jak uwierzytelnianie.

https://maven.apache.org/guides/introduction/introduction-to-repositories.html

Zrobione z http://wiki.jfrog.org/confluence/display/rtf/repository+layouts Maven Repository Layout: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

Przykład org/eclipse/jetty/jetty-ajp/7.0.2.v20100331/jetty-ajp-7.0.2.v20100331.jar

+1

W twojej odpowiedzi, czy powinienem założyć, że "układ repozytorium Maven" tłumaczy się na API REST? To znaczy, czy mogę wywołać GET http: //www.myrepo.com/my.org/myartifact/1.0/item.jar i uzyskać mój artefakt? –

+1

Tak, jeśli używasz serwera takiego jak Artifactory, Nexus lub po prostu podążasz za układem i korzystasz z normalnego serwera HTTP, to będzie działać z prostymi GET-ami, ale wersja jest powtarzana w pliku, a orgId jest rozszerzone 'myrepo.com/my/org/myartifact/1.0/myartifact-1.0.jar' –

4

Typowym protokołem jest http ponadto dla .net istnieje już rozwiązanie, które nazywa się nuget, które obsługuje już i współpracuje z niektórymi menedżerami repozytorium, takimi jak neux i artifactory.

Ah ... Maven używa własnego protokołu. Brak SOAP itp. Może wyglądać nieco inaczej. A ponadto this.

Aktualizacja Możesz po prostu pobrać artefakt z repozytorium Maven przez wget ... który jest po prostu operacją http-get. Aby uplodować artefakt, wystarczy po prostu wstawić http ... możesz to zrobić za pomocą curl.

+0

Aby być bardziej dokładnym, Nexus ma wsparcie w eksponowaniu artefaktów za pomocą struktury, której oczekuje Maven. – millimoose

+0

Ta odpowiedź nie dotyczy tematu. Pytałem o Mavena, a ty mówisz mi o Nuget. (głosowanie w dół) –

+0

Ale prosiłeś o ** Chciałbym to zrobić w .net (z jakiegokolwiek powodu) ** Hm ... Ciekawe ... Chcę tylko dać wskazówkę, że takie rzeczy już istnieją. – khmarbaise

2

O ile mi wiadomo, nie ma naprawdę protokół. Repozytorium Maven jest po prostu specyficzną strukturą zasobów dostępną poprzez HTTP (lub w lokalnym katalogu). Jest nieco przestarzały description available at Codehaus.

"Wdrażanie" repozytorium oznacza przesłanie pliku w w dowolny sposób, podany, o ile jest dostępny do późniejszego uzyskania z powyższego układu. documentation for the deploy plugin dostarcza przykłady dla FTP i SSH, co oznacza prosty upload plików do takiej struktury katalogów. Ale równie dobrze możesz przesłać pliki do niestandardowej usługi WWW, która przechowuje je w bazie danych, która następnie jest odpowiednio eksponowana przez HTTP. Maven nie będzie się specjalnie przejmować; artefakt, wdrażanie, przechowywanie i dostęp do repozytorium są odsprzęgane.

3

Ściśle nie ma specjalnego protokołu dostępu dla Mavena. Maven używa zwykłego HTTP, aby pobrać artefakty z repozytorium. Repozytorium powinno mieć specjalny układ, tj. Strukturę URL (która po prostu wyświetla się w zwykłej strukturze katalogów).Możesz zorganizować własne repo po prostu organizując katalogi w specjalny sposób: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext] bez specjalnego oprogramowania po stronie serwera.

Jest to więc bardziej struktura katalogów niż specjalny protokół. Bardzo proste i działające podejście.

Oczywiście, jeśli chcesz korzystać z dodatkowych usług (takich jak wyszukiwanie, kontrola dostępu, statystyki itp.), Powinieneś zrobić to sam. To właśnie robi JFrog z produktem Artifactory.

0

HTTP GET, w tym formacie:

GET /content/repositories/approved-from-central/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom HTTP/1.1 
Cache-control: no-cache 
Cache-store: no-store 
Pragma: no-cache 
Expires: 0 
Accept-Encoding: gzip 
User-Agent: Apache-Maven/3.3.9 (Java 1.8.0_102; Windows 7 6.1) 
Host: localhost 
Connection: Keep-Alive 

mam udokumentowane tutaj http://www.javamonamour.org/2017/10/maven-to-repository-protocol.html