0
  1. ライブラリ スナップショット バージョンを参照するプロジェクトがあるとしますlibrary:1.0.0-SNAPSHOT
  2. プロジェクトをローカルでビルドし、Maven がlibrary:1.0.0-SNAPSHOTそのローカル キャッシュに取り込まれるようにします。
  3. おそらくライブラリを ing してlibrary:1.0.0-SNAPSHOT、Nexus (または選択したアーティファクト ストレージ) からパージします。mvn release
  4. プロジェクトをローカルで再度ビルドします。おそらく--update-snapshots-成功します。

ここでの質問は次のとおりです。リモート スナップショットが削除されたときに Maven がローカルでビルドに失敗するようにするにはどうすればよいですか?

私は継続的インテグレーション システムでこの偉業を達成したいと考えています。つまり、構築する前にローカル キャッシュ全体を消去する必要があるソリューションは不可能です。また、プロジェクトの POM をイントロスペクトし、ビルド前にローカル キャッシュからアーティファクトを外科的に削除することもできません。

注: 私は#MNG-5245を Maven に提出しました。欠落している場合は、この機能の作成を早めることを望んでいます。したがって、このバグ レポートを見つけた場合は、それを回答として使用する誘惑に抵抗してください。

4

3 に答える 3

1

Maven依存関係プラグインには、ローカルリポジトリから特定のアーティファクトを削除するように構成できるローカルリポジトリのパージの目標があります。CIサービスをホストしている同じサーバー(したがって、パージする必要のあるローカルリポジトリ)でリリースビルドを作成する場合、dependency:purge-local-repositoryの間にMavenリリースプラグインによってアクティブ化されるプロファイルにの実行を追加できる可能性がありますrelease:perform

これは、個々の開発マシンのローカルリポジトリをクリアするためには何もしないことに注意してください。

于 2013-02-20T14:24:18.907 に答える
1

私が考えることができる最も近いのは、ローカルでビルドする前に、まずローカル リポジトリのスナップショットのローカル リポジトリ パージを行うことです。

http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

ビルドが「成功」した理由は、Maven がローカル リポジトリで対応するスナップショット アーティファクトを実際に見つけることができるためです。Maven には「古い」アーティファクトの概念がないため、ローカルに保存されたすべてのアーティファクトは実際には有効なもの (スナップショットを含む) です。最善の方法は、ローカル リポジトリにスナップショット アーティファクトがないことを確認し、リモート リポジトリから Maven を強制的にダウンロードすることです。ただし、すべての依存関係がリモート リポジトリからダウンロードされた場合にのみ機能します。

于 2013-02-20T01:45:57.457 に答える
1

いいえ、Maven はこれをサポートしていません。それが正しい解決策になる問題も想像できません。別の質問をして、達成しようとしていることを説明することをお勧めします。そこにたどり着くためのより良い方法があるかもしれません。

于 2013-02-20T00:34:31.247 に答える