4

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

今、私は SNAPSHOT の概念を誤解していると思うので、誰かが私を正してくれたらとてもありがたいです. 私が持っているjarの名前はfoo-0.5.0-20090612.124.jarで、maven deploy:deployファイルを使用してバージョン0.5.0のorg.bar.fooにアップロードしようとしました。私のPOMのバージョン依存関係は0.5.0-SNAPSHOTです

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

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

4

2 に答える 2

4

あなたが持っているユースケースは問題ありません。Maven 関係者が推奨するベスト プラクティスは、jar の SNAPSHOT バージョンを共有リポジトリにアップロードしたら、それを SNAPSHOT として扱うのをやめ、代わりにリリースとして扱うことだと思います。

アーティファクトの特定のバージョンに依存してもらいたいので、これは理にかなっています。アーティファクトは活発に開発されておらず、任意の時点で任意に変更されることは想定されていないため、リリースと見なす必要があります。あなた自身の個人的な派手な名前を付けたものと、他の誰かが SNAPSHOT と見なしたものだけです。

依存関係 foo-0.5.0-SNAPSHOT を要求すると、Maven が foo-0.5.0- を探すとは思えません。リポジトリで文字通り foo-0.5.0-SNAPSHOT を探していると思いますが、それが見つからないのです。(ただし、SNAPSHOT にタイムスタンプを付けていないため、これについて 100% 確信があるわけではありません。作成された新しいバージョンの -SNAPSHOT jar を継続的に上書きするだけです。)

したがって、foo-0.5.0-20090612.124.jar をサードパーティのリポジトリ (上記の理由でリリースのみを含む必要があります) に入れます。次に、pom で「リリースされた」アーティファクト foo-0.5.0-20090612.124 を明示的に参照すると、すべて正常に動作するはずです。

于 2009-06-12T17:53:45.457 に答える
0

私がフォローしているかどうかわかりません.のバージョンで にmyartifact.jar添付されたというアーティファクトが必要です.POM0.5-SNAPSHOT

デプロイするとき、リポジトリをタイムスタンプに変更-SNAPSHOTし、これが最新の SNAPSHOT バージョンであることを反映するようにリポジトリ メタデータを更新して、SNAPSHOT 要求を適切に処理できるようにする必要があります。

ArchivaNexusなどのリポジトリを使用していますか? それとも FTP/HTTP サーバーのみを使用していますか?

于 2009-06-12T10:45:25.300 に答える