2013-04-03 1 views
16

最近私はMavenについてたくさんのことを学び、とても感銘を受けた。 Mavenと同じ方法で、リポジトリとの通信、リポジトリへの展開、リポジトリからの取得に関する情報はどこにありますか?これはいくつかの公開されたプロトコルによって行われますか?Mavenリポジトリプロトコルとは何ですか?

私はOSGI(およびOBR)についての情報を見つけましたが、これが私が検討すべきものかどうかは分かりません。

私はこれを(何らかの理由で)ネットで行いたいと思います。誰かが私に正しいコンポーネントを指し示すことができるなら、Javaソースコードを見ても構わないが、プロトコル仕様を指し示すことになるだろう。

[編集] HTTPに関する多くの回答があります。私はさらに明確にしたい、私は転送プロトコルを探していない、私はAPIプロトコルを探しています。たとえば、SOAP(Simple Object Access Protocol)は、ハイパーテキスト転送プロトコルを使用してメッセージを転送します。 Mavenのアクセスプロトコルとは何ですか?

+0

それを文書化しています。 –

+0

OSGiがどのように関連しているかわかりません。いずれにしても、Gradle、IvyなどのMavenレポジトリを使用するプロジェクトがいくつかあることにも注意してください。 –

+0

これはあなたの質問には直接関係しませんが、私はSonarのmaven-dotnet-plugin(codehaus.org)を使用してMavenを使用してC#プロジェクトを構築することに成功しました。 .NETとMavenに言及して以来、私はそこにそれを投げ捨てると思っていました。 – Allan

答えて

13

khmarbaiseは既に転送プロトコルはほとんどの場合http(s)であると述べていますが、利用可能な他のプロトコルもあります。ローカルリポジトリの簡単なファイルアクセス、WebDAV、SCP、SFTPなどが含まれます。 Mavenリポジトリは特別なディレクトリレイアウトです。リモートリポジトリのプロキシや認証などの特定のチェックのような追加機能を提供するNexusやArtifactoryなどのサーバがあります。 [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

+1

あなたの答えでは、「Maven Repository Layout」がREST APIに変換されると仮定しますか?それは私がGET http://www.myrepo.com/my.org/myartifact/1.0/item.jarと呼んで私の人工物を得ることができますか? –

+1

Artifactory、Nexusのようなサーバーを使用している場合、または単純にレイアウトに従って通常のHTTPサーバーを使用すると、単純なGETでも動作しますが、ファイル内でバージョンが繰り返され、orgIdが展開されます。/my/org/myartifact/1.0/myartifact-1.0.jar' –

4

通常のプロトコルはhttpとなっています。すでに.netにはすでにこれがサポートされており、neuxsやartifactoryのようなリポジトリマネージャの一部で動作する、nugetというソリューションがあります。

Ah ... Mavenは独自のプロトコルを使用します。 SOAPなどは見えませんhere少し助けてください。さらに、this

更新 単純にhttp-get操作であるMgetリポジトリからartifactをダウンロードすることができます。アーティファクトを増やすには、単純にhttpを入力します。これをカールすることができます。

+0

もっと正確に言えば、Nexusは、Mavenが期待する構造を使用してアーチファクトを公開することをサポートしています。 – millimoose

+0

この回答はトピックにありません。私はMavenについて尋ねた。あなたはNugetについて語っている。 (下投票) –

+0

しかし、あなたは尋ねました**私はネットでこれを何とかしたいと思っています(何らかの理由で)**興味深い...これはすでに存在するというヒントを与えたいだけです。 – khmarbaise

2

私の知る限りでは、プロトコルは実際にはありません。 http://wiki.jfrog.org/confluence/display/rtf/repository+layouts Mavenのリポジトリのレイアウトから撮影

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

。 Mavenリポジトリは、HTTP(またはローカルディレクトリ)上で利用可能な特定のリソース構造にすぎません。多少の日付はdescription available at Codehausです。

リポジトリへの展開とは、にファイルをアップロードすることです。これは後で上記のレイアウトから取得できる限り、になります。 documentation for the deploy pluginでは、FTPやSSHの例が提供されています。これは、単純なファイルのアップロードをそのようなディレクトリ構造に含めることを意味します。しかし、カスタムWebサービスにファイルをアップロードしてデータベースに保存し、HTTP経由で適切に公開することもできます。 Mavenは本当に気にしません。アーチファクトの展開、ストレージ、およびリポジトリへのアクセスが分離されます。

3

厳密には、Maven用の特別なアクセスプロトコルはありません。 MavenはプレーンなHTTPを使ってリポジトリからアーティファクトを取得します。リポジトリには特別なレイアウト、つまりURL構造(通常のディレクトリ構造に投影されたもの)が必要です。特殊な方法でディレクトリを整理するだけで、独自のリポジトリを整理することができます。[orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]サーバ側に特別なソフトウェアはありません。

したがって、特別なプロトコルよりもディレクトリ構造が重要です。非常に単純で実用的なアプローチ。

もちろん、検索、アクセスコントロール、統計などの追加サービスをご希望の場合は、自分で行う必要があります。それはArtifactory製品でJFrogの何をするのですか?

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 

私は100%確実ではないが、私はそれがGETとPOSTと単なるHTTPだと思うここhttp://www.javamonamour.org/2017/10/maven-to-repository-protocol.html

関連する問題