2013-04-03 39 views
16

Tôi đã học được rất nhiều về Maven gần đây và rất ấn tượng. Tôi có thể tìm thông tin về giao tiếp, triển khai và truy xuất từ ​​kho lưu trữ theo cách tương tự như Maven ở đâu? Điều này có được thực hiện thông qua một số giao thức đã xuất bản không?Giao thức kho lưu trữ maven là gì?

Tôi đã tìm thấy thông tin về OSGI (và OBR) nhưng không thể biết đây có phải là điều tôi nên xem xét hay không.

Tôi muốn thực hiện việc này bằng .net (vì bất kỳ lý do gì). Tôi không quan tâm tìm kiếm thông qua mã nguồn java nếu ai đó có thể chỉ cho tôi vào các thành phần chính xác, nhưng rất nhiều sẽ được chỉ vào các chi tiết kỹ thuật giao thức.

[EDIT] Tôi thấy rất nhiều câu trả lời liên quan đến HTTP. Tôi muốn làm rõ thêm, tôi không tìm kiếm giao thức chuyển giao, tôi đang tìm giao thức API. Ví dụ, Giao thức truy cập đối tượng đơn giản (SOAP) sử dụng Giao thức chuyển văn bản siêu để truyền tải thông điệp. Giao thức truy cập cho Maven là gì?

+0

tôi chắc chắn không phải là 100% nhưng tôi nghĩ rằng nó chỉ là http đồng bằng với GET và POST. –

+0

Tôi không thấy OSGi có liên quan gì cả. Trong mọi trường hợp, cũng lưu ý rằng có một số dự án sử dụng repo Maven, như Gradle, Ivy, v.v. –

+0

Điều này không liên quan trực tiếp đến câu hỏi của bạn, nhưng FYI chúng tôi đã có thành công rất tốt trong việc sử dụng Maven để xây dựng các dự án C# bằng cách sử dụng plugin maven-dotnet của Sonar (từ codehaus.org). Chỉ cần nghĩ rằng tôi muốn ném ra khỏi đó kể từ khi bạn đề cập. NET và Maven. – Allan

Trả lời

13

Như khmarbaise đã nói giao thức chuyển giao là trong hầu hết các trường hợp http (s), nhưng có các giao thức khác có sẵn, ví dụ: truy cập tệp đơn giản cho các kho lưu trữ cục bộ, WebDAV, SCP, SFTP, v.v. Kho lưu trữ maven là một bố cục thư mục đặc biệt hơn. Có các máy chủ như Nexus hoặc Artifactory cung cấp chức năng bổ sung như proxy lưu trữ từ xa hoặc kiểm tra nhất định như xác thực.

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

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

Ví dụ org/eclipse/jetty/jetty-ajp/7.0.2.v20100331/jetty-ajp-7.0.2.v20100331.jar

+1

Trong câu trả lời của bạn, tôi có nên giả định rằng "Bố cục Kho lưu trữ Maven" dịch sang một API REST không? Tôi có thể gọi GET http: //www.myrepo.com/my.org/myartifact/1.0/item.jar và nhận phần tạo tác của mình không? –

+1

Có, nếu bạn sử dụng máy chủ như Artifactory, Nexus hoặc nếu bạn chỉ cần theo dõi bố cục và sử dụng Máy chủ HTTP thông thường thì nó sẽ hoạt động với các GET đơn giản nhưng phiên bản được lặp lại trong tệp và orgId được mở rộng 'myrepo.com/my/org/myartifact/1.0/myartifact-1.0.jar' –

4

Giao thức thông thường là http hơn nữa đối với .net có sẵn giải pháp được gọi là nuget hỗ trợ đã và hoạt động với một số người quản lý kho lưu trữ như neux và artifactory.

Ah ... Maven sử dụng giao thức riêng của nó. Không SOAP vv Có thể là một cái nhìn here sẽ giúp một chút. Và hơn nữa this.

Cập nhật Bạn chỉ cần tải xuống một tạo phẩm từ kho lưu trữ Maven bởi wget ... mà chỉ đơn giản là thao tác http-get. Để uplodate một artifact chỉ đơn giản là một http-put ... bạn có thể làm điều này bằng curl.

+0

Để chính xác hơn, Nexus có hỗ trợ hiển thị đồ tạo tác sử dụng cấu trúc mà Maven mong đợi. – millimoose

+0

Câu trả lời này không nằm trong chủ đề. Tôi hỏi về Maven, và bạn đang kể cho tôi nghe về Nuget. (bỏ phiếu) –

+0

Nhưng bạn đã yêu cầu ** Tôi muốn làm điều này trong .net (vì lý do gì). ** Hm..interesting ... Tôi chỉ muốn đưa ra một gợi ý rằng những thứ như thế này đã tồn tại. – khmarbaise

2

Theo như tôi biết, có không phải là thực sự là một giao thức. Kho lưu trữ Maven chỉ là một cấu trúc tài nguyên cụ thể có sẵn trên HTTP (hoặc trong một thư mục cục bộ.) Có một số ngày description available at Codehaus.

"Triển khai" kho lưu trữ có nghĩa là tải tệp lên theo số tùy theo cách bạn muốn miễn là có sẵn để nhận được từ bố cục ở trên sau đó. documentation for the deploy plugin cung cấp các ví dụ cho FTP và SSH, ngụ ý tải lên tệp đơn giản vào cấu trúc thư mục như vậy. Nhưng bạn cũng có thể tải các tệp lên dịch vụ web tùy chỉnh lưu trữ chúng trong cơ sở dữ liệu sau đó được tiếp xúc thích hợp qua HTTP. Maven sẽ không thực sự quan tâm; triển khai artefact, lưu trữ và truy cập kho lưu trữ được tách riêng.

3

Nghiêm túc, không có giao thức truy cập đặc biệt cho Maven. Maven sử dụng HTTP thuần để nhận các tạo phẩm từ kho lưu trữ. Kho lưu trữ phải có bố cục đặc biệt, tức là cấu trúc URL (chỉ đơn giản là chiếu lên cấu trúc thư mục thông thường).Bạn có thể tổ chức repo của riêng bạn chỉ đơn giản bằng cách tổ chức các thư mục theo cách đặc biệt: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext] mà không cần bất kỳ phần mềm đặc biệt nào trên phía máy chủ.

Vì vậy, đó là cấu trúc thư mục nhiều hơn so với giao thức đặc biệt. Cách tiếp cận rất đơn giản và làm việc.

Tất nhiên, nếu bạn muốn các dịch vụ bổ sung xung quanh nó (như tìm kiếm, kiểm soát truy cập, số liệu thống kê, v.v ...), bạn nên tự làm. Đó là những gì JFrog thực hiện với sản phẩm Artifactory của nó.

0

HTTP GET, với định dạng này:

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 

tôi đã ghi nhận nó ở đây http://www.javamonamour.org/2017/10/maven-to-repository-protocol.html

Các vấn đề liên quan