2009-05-05 15 views
6

Google's Analytics Data API (gdata)のような第三者のライブラリを使用しているプロジェクトがあり、現在よく知られているMaven公開リポジトリ/インデックスには展開されていないようです。ローカルのホストされたNexusリポジトリにアーティファクトを展開するだけで済むので、これは大きな問題ではありません。サードパーティのライブラリをホストされているMavenリポジトリにインストールするためのベストプラクティス?

しかし、私のPOMにこのライブラリの "座標"をどのように名付けるべきかについて、Mavenコミュニティにはベストプラクティスがありますか?スタンダードは公開リポジトリにまだ設定されていないからですか?例えば

、私は

<dependency> 
    <groupId>com.google</groupId> 
    <artifactId>gdata-analytics</artifactId> 
    <version>1.0</version> 
</dependency> 

としての私のPOMでそれを参照するか、私はartifactIdを考え出すためにいくつかのより良い/より多くの標準的な方法はありますでしょうか?

(なぜ、Googleのような数十のライブラリのプロバイダが、Mavenリポジトリ/インデックスのメインストリームにホストするために何らかの努力を払っていないのはなぜですか? )

答えて

3

あなたがしたことはかなり妥当です。いくつかの余分なポイント:Mavenのは、ネクサスからアーティファクトを取得すると

  • 、アーチファクトがたartifactId、バージョンとして命名されます。 GroupIdは面倒なことに省略されています。したがって、アーティファクトが移動されると(たとえば、WebアプリケーションのWEB-INF/libにコピーされる)、jarファイルには「gdata-analytics-1.0」と表示されます。これは通常問題ではありません。ただし、「util」のようにアーティファクト名が非常に一般的な場合は、groupIdを「com.google」、案件ID「com.google.gdata- analytics "となります。はい、反復は厄介ですが、ファイルシステムと検索を最大限に明確にします。私は実際には、2つの異なるgroupIdsが両方とも "core-1.0"のjarを持っていて、ビルド時にlibディレクトリにコピーされたときにもう一方が上書きされるという問題がありました。

  • 私は、あなたのMavenのバージョンIDを、一般に知られているどのバージョンのアトリビュートにも合わせることを提案します。

  • あなたが自分の会社名(例えばacme)でgroupIdのプレフィックスを付けるというドミニクのアドバイスに従えば、Nexusのルーティング機能をより簡単に活用できるかもしれません。それは!内部成果物に対する要求がMavenの中央に出て伝播されないことを確実にし、あなたのgroupIdは「acme.secret.project」である場合に重要である可能性がある(そのログになってしまいます

+0

すべての良い提案 - 私はこの答えを受け入れた理由です。私が配備していたgoogleによって配布されたJARは、すでに「gdata-analytics-1.0.jar」という名前が付けられていました。ここでは、アーティファクトとバージョン番号を取得しました。 GARAは良いJARのネーミングを好きになる –

3

私はMavenを約1年間使ってきましたが、 "標準"命名規則を実行したことはありません。私は通常、あなたがやっていることを正確に行いますが、複数のバージョンを展開する場合の混乱を避けるため、できるだけ「実際の」バージョン番号に近いバージョン番号を作ろうとします。

+0

これはまさに私がやったことですが、フィードバックに感謝します –

2

私は自分自身の通常のgroupIdでgroupIdの接頭辞を付ける傾向があります。これは、それがアップロードされたものであることが絶対的に明らかになります。大規模な世界に漏れた場合に備えてです。

0

多くはsourceforgeプロジェクトでは、グループIDでプロジェクト名を使用します。例:

GroupId net.sf.json-lib ArtifactId json-lib

これは、Googleの成果物の数が多いため、Googleの例では適切かもしれません。

クラスファイヤー・タグを使用して、2つのjarファイルを同じバージョンで区別することができますが、異なる目的(例:異なるJVM)で構築することができます。

0

あなたは運が良かったかもしれません.Googleはプロジェクトに独自のMavenレポを持っています。 Instructions

私はpropietaryないくつかのJarファイルを持っていましたので、私は各ワークステーションにロードしなければなりませんでした(会社はまだレポを共有していません)。私はそれらを/ libディレクトリのソースコードツリーに入れ(良いとは限りません)、mvn install-fileコマンドを含む小さな.BATファイル(または.shスクリプト)を追加して、ローカルマシンのレポを最初にロードします私が構築する時間。これらのjarファイルを更新する必要がある場合は、load.batファイルも更新して再実行します。私の状況では、それが1年に1回以上、おそらくそれ以下で起こるとは思わない。

+0

ありがとう - しかし、このレポは私にはあまり現れていません。私が私の元の記事で述べたアーティファクトはそこにはありません。 –

関連する問題