2012-01-23 4 views
3

私はmavenリポジトリに存在しないサードパーティのjarを持っています。それを "a.jar"そのうち少なくとも20以上のサードパーティ製のjarファイルに依存していますが、そのほとんどはmavenにもないので、 "b.jar、c.jar、d.jar、..."と呼んでください。どのようにmvnリポジトリにすべての依存関係を適切にインストールするのですか?サードパーティの非mvn jar依存関係を持つサードパーティ非mvn jarをインストールします

"a.jar"をリポジトリにインストールするため、標準の "mvn install:install-file"は動作しませんが、依存関係はありません。さらに、mvnは他のプロジェクトで使用されているときに "a.jar"に依存関係があることをどのように知っているでしょうか。私は私がやろうとしているものと同様と思われる一つの他のstackoverflow質問、

maven install and deploy 3rd party dependencies with simple command line

を見てきました。しかし、私はMVNのnoobだと、それは十分なので、私は」説明していない

私は主に彼がやっていることと理由について迷っています。(私は、これらの依存関係をmvnリポジトリにインストールするために、なぜpom.xmlの親ファイルと子ファイルを含める必要があるのか​​分からないということです。

答えて

4

Mavenが私たちの生活を楽にするためには、少なくとも当初、私たちの生活をより困難にする領域を見つけることができました。あなたがそれらを使うことができるリポジトリで、特に初心者のために欠けているライブラリを手に入れることは、正しい痛みになるかもしれません。ライブラリがリポジトリに入ったら、Mavenの依存メカニズムは素晴らしいものであり、人生は価値のあるものです。長期的には、それはあなたに大量の時間と頭痛を節約します。しかし、まずあなたは苦しんでいなければなりません...

あなたのライブラリをリポジトリに入れて、それを使用できるようにすることです。まず、中央のレポを本当に見て、後にある図書館がまだ存在しないことを確認します。あなたのライブラリーにはsearch the central repoできます。

リポジトリに展開する必要がある場合、最初に知っておくべきことは、ほとんどの人が企業またはプライベートネットワーク内で独自のリポジトリをホストすることです。 ArtifactoryNexusはともにリポジトリマネージャであり、これらのうちの1つを実行して、Mavenビルドのアーティファクトとサードパーティのライブラリをどこかに配置する必要があります。私はArtifactoryを使い、それをとても好きですが、Nexusもうまくいくと聞いて、Sonatypeの人たちによって書かれています。これらのリポジトリは、中央リポジトリのプロキシとして動作し、そこではあなたのMavenビルドを排他的にポイントし、中央リポジトリからアーティファクトを解決してダウンロードし、キャッシュします。中央リポジトリは、ネットワークトラフィックの影響をそのまま受けているため、これを愛しています。

ネットワーク上のレポがない場合は、ボックスのローカルリポジトリ(userhome.m2 \ repositoryにあります)にアーチファクトをいつでも展開/インストールできます。あなたのローカルボックスでmavenビルドを実行し、mavenに "install"と言うと、これはビルド成果物を置く場所です。また、ビルド時に中央リポジトリからの依存関係のダウンロードがここに配置され、後のビルド時に再利用されてネットワークトラフィックが削減されます。欠点は、他の開発者と一緒に作業しても、チェックアウトやコード作成ができないことです。ローカルのレポにアーチファクトを展開するには、イライラしてエラーが発生する可能性があります。したがって、すべての開発者が使用できるすべての成果物について、企業のメイキングレポを作成することをお勧めします。

これ以外にも、あなたの直面している問題には、2つの一般的な戦略があります。サードパーティのライブラリとそのすべての依存関係をデフォルトのpomsを使用してデプロイし、次にプロジェクトのpomファイルにすべて依存関係として宣言します。あるいは、Mavenの推移的依存メカニズムに依存することもできます。最初に、すべての依存関係を宣言するpomファイルを含む第三者のライブラリをデプロイしてから、すべての依存関係をデフォルトのポームを使用してデプロイします。最後に、プロジェクトのpomでは、サードパーティのライブラリに依存関係を宣言するだけで、mavenの推移的な依存性メカニズムによって、他のすべてのライブラリを取得できます。

"Maven: The Complete Reference""Repository Management with Nexus"を含むSontatype booksのオンラインで読んでみることをお勧めします。

+0

+1。私はMavenリポジトリをホストするためにこの勧告を支持します。 Mavenがエンタープライズ環境でどのように拡張するかを理解するでしょう。 –

+0

私たちは実際にMavenリポジトリを持っています。そのため、これらのサードパーティ製のファイルを含めてどうやってどうやって作業するのかを理解しようとしています。 – Thirlan

+0

良い、それは大きなプラスです。 ArtifactoryはWebベースで、ユーザーがサードパーティ製のライブラリをアップロードできる画面があります。 groupId、artifactId、versionId、およびオプションのpomファイル(推移的依存関係を指定できる)を指定します。これは、mavenデプロイよりも簡単です(http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html)。どのリポジトリマネージャを使用しているか分かりませんが、同様のデプロイメントメカニズムを提供していないと驚いています。 – BenjaminLinus

2

mvn install:install-fileを実行すると、インストールしているもののpomファイルを指定することができますng。あなたの依存関係をそのポームに入れてください。

編集: ああ、その後、依存関係についてもそれをしてください。おそらく、依存関係の方がまず簡単です。

関連する問題