19

最近我学到了很多关于 Maven 的知识,印象非常深刻。我在哪里可以找到有关以与 Maven 相同的方式与存储库进行通信、部署和检索的信息?这是通过一些已发布的协议完成的吗?

我找到了有关 OSGI(和 OBR)的信息,但不知道这是否是我应该研究的。

我想在 .net 中执行此操作(无论出于何种原因)。如果有人可以将我指向正确的组件,我不介意查看 java 源代码,但更愿意指向协议规范。

[编辑] 我看到很多关于 HTTP 的答案。我想进一步澄清一下,我不是在寻找传输协议,而是在寻找 API 协议。例如,简单对象访问协议 (SOAP) 使用超文本传输​​协议来传输消息。Maven的访问协议是什么?

4

5 回答 5

16

正如khmarbaise 已经说过的,在大多数情况下传输协议是http(s),但还有其他可用的协议,例如本地存储库的简单文件访问、WebDAV、SCP、SFTP 等。maven 存储库更像是一种特殊的目录布局。像 Nexus 或 Artifactory 这样的服务器提供了额外的功能,比如代理远程存储库或某些检查,比如身份验证。

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

取自 http://wiki.jfrog.org/confluence/display/rtf/repository+layouts Maven 存储库布局: [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]

例子 org/eclipse/jetty/jetty-ajp/7.0.2.v20100331/jetty-ajp-7.0.2.v20100331.jar

于 2013-04-03T16:51:59.503 回答
4

通常的协议是 http 此外,对于 .net,已经存在一个称为nuget的解决方案,它已经支持它并与一些存储库管理器(如 neuxs 和 artifactory)一起使用。

啊...Maven 使用它自己的协议。没有 SOAP 等。可能看看这里会有所帮助。而且这个

更新 您可以简单地通过 wget 从 Maven 存储库下载一个工件 ...这只是一个 http-get 操作。上传一个工件只是一个 http-put ...你可以通过 curl 来做到这一点。

于 2013-04-03T16:43:02.250 回答
3

严格来说,Maven 没有特殊的访问协议。Maven 使用纯 HTTP 从存储库中获取工件。存储库应该有特殊的布局,即 URL 结构(简单地投影到通常的目录结构)。您可以通过以特殊方式组织目录来组织自己的 repo:[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]在服务器端无需任何特殊软件。

因此,它更多的是关于目录结构而不是特殊协议。非常简单和有效的方法。

当然,如果你想围绕它提供额外的服务(比如搜索、访问控制、统计等),你应该自己做。这就是JFrog使用其Artifactory产品所做的事情。

于 2016-02-15T09:12:02.197 回答
2

据我所知,并没有真正的协议。Maven 存储库只是通过 HTTP(或在本地目录中)可用的特定资源结构。在 Codehaus 上有一个有点过时的描述

“部署到”存储库意味着以您希望的任何方式上传文件,只要以后可以从上述布局中获取。该插件的文档deploy提供了 FTP 和 SSH 的示例,这意味着将简单的文件上传到这样的目录结构中。但是您也可以将文件上传到自定义 Web 服务,该服务将它们存储在数据库中,然后通过 HTTP 适当地公开。Maven 不会真的在乎。工件部署、存储和存储库访问是分离的。

于 2013-04-03T17:43:15.483 回答
0

HTTP GET,格式如下:

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

我在这里记录了它http://www.javamonamour.org/2017/10/maven-to-repository-protocol.html

于 2017-11-04T18:08:18.493 回答