2009-06-12 13 views
4

サードパーティ製ライブラリのスナップショット版をローカルリポジトリに展開しようとしています(従来の理由でこれは古いバージョンで、オンラインリポジトリではホストされなくなりました。私はそれを置き換えることができないので、私はそれをローカルにホストする必要があります)。Mavenが間違ったスナップショットバージョンを使用しようとしています

今私はスナップショットの概念を誤解していると思うので、誰かが私を真っ直ぐにすることができたらとても感謝しています。私が持っているjarファイルの名前はfoo-0.5.0-20090612.124.jarです。maven deploy:deploy.exeファイルをバージョン0.5.0でorg.bar.fooにデプロイしてみます。 私のPOMのバージョン依存性は0.5.0-SNAPSHOTです

ローカルリポジトリにjarファイルをアップロードするたびに、ファイル名の日付に続く数字が反復(つまり125)されますが、maven installを実行するとmavenは以前の番号(つまり124)のjarをダウンロードしようとします。

mavenに正しいスナップショットバージョンをダウンロードする方法はありますか、またはサードパーティのSNAPSHOTファイルをGoogleのリポジトリにアップロードする必要はありませんか?

答えて

4

ご使用のユースケースは問題ありません。私は、Mavenの人々が推奨するベストプラクティスは、スナップショットバージョンの共有リポジトリを共有リポジトリにアップロードすると、そのスナップショットをスナップショットとして扱うのを止め、代わりにリリースとして行うことです。

あなたは、人々がそのアーティファクトの特定のバージョンというに依存するようにしたいので、これは理にかなっています。アーティファクトは積極的に開発されておらず、任意の時点で任意に変更されるとは予想されていないため、リリースとみなす必要があります。ちょうど1つはあなた自身の個人的な名字を、もう1つは他の人がスナップショットを考えたものです。

依存関係foo-0.5.0-SNAPSHOTを求めるとき、私はMavenがfoo-0.5.0-を探すとは思わない。私はそれが文字通りリポジトリ内のfoo-0.5.0-SNAPSHOTを探していると信じているので、それを見つけられません。 (SNAPSHOTSにタイムスタンプを付けないので、100%確実ではありません.SNAPSHOTのjarファイルを新しいバージョンに上書きするだけです)

したがって、foo-0.5.0-20090612.124.jarサードパーティのリポジトリ(上記の理由によるリリースのみを含む)に追加します。その後、あなたのポームで、 "リリースされた"アーティファクトfoo-0.5.0-20090612.124を明示的に参照し、すべて正常に動作するはずです。

+0

私は本当にあなたが正しいと言います、私は本当に私のレポにサードパーティのスナップショットを追加するビジネスはありません。 SNAPSHOTタグを削除するのが最も簡単な方法でした。 – mikek

0

0.5-SNAPSHOTPOMに添付されているmyartifact.jarというアーティファクトを持っている必要があります。展開する場合

、リポジトリタイムスタンプに-SNAPSHOTを変更し、それが適切にSNAPSHOT要求を果たすことができるように、これは最新のスナップショットのバージョンであることを反映するために、リポジトリのメタデータを更新する必要があります。

ArchivaまたはNexusなどのリポジトリを使用しているのか、FTP/HTTPサーバーだけを使用していますか。

+0

どちらもローカルファイルサーバーではありません。このレポは純粋に内部使用のためのものです。 これは私がやろうとしていることです。問題は、mavenをインストールすると、正しいタイムスタンプが検索されず、以前のものが検索されることです。 タイムスタンプを決定するサードパーティ製のjarファイルに固有のものはありますか? – mikek

関連する問題