私はXに依存するプロジェクトに取り組んでいます。XはYに依存しています。
以前は、プロジェクトのPOMに明示的にYを含めていました。しかし、それは使用されておらず、物事をきれいにするために、代わりに依存関係としてXのpomに追加しました。 Xはリリースの依存関係としてマークされます。
問題は、プロジェクトのPOMからYを削除してXのPOMに追加した後、プロジェクトがmvn -U clean package
でそれを取得していないことです。 -Uはスナップショットを更新しますが、リリースは更新しません。
〜/ .m2/repositoryディレクトリを削除せずに XのPOMの再ダウンロードを強制するにはどうすればよいですか?また、dependency:purge-local-repository
を実行しようとしましたが、動作しませんでした。
Mavenに依存関係を再ダウンロードさせることはできませんが、代わりに行うことができるのは、mvn dependency:purge-local-repository
を使用して誤ってダウンロードされた依存関係をパージすることです
参照: http://maven.Apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html
〜/ .m2/repositoryを削除しただけで、再ダウンロードが強制されました;)
次のコマンドが役立つと思います!
mvn -U clean install
ALi Tokmenの回答に感謝します。次のコマンドを使用して、特定のローカル依存関係を強制的に削除できました。
mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils
これにより、.m2/repositoryからutils
が削除され、mvn clean install
の実行時に常にutils
JAR依存関係が再ダウンロードされます。
プロジェクトを右クリック-> Maven->プロジェクトを更新し、スクリーンショットのようにチェックボックスをオンにします。リリースも更新されます:)
質問に「maven-2」というタグを付けました。この問題を解決するために、Maven 3で-Uオプションが追加されました。
アップグレードをお勧めします。
mvn clean install -U
-Uは、依存関係の強制更新を意味します。
Cleanまたは-Uなしで単一の依存関係を更新する場合は、ローカルリポジトリから削除してビルドするだけです。
Xに追加したとき、Xのバージョン番号、つまりX-1.2をインクリメントしているはずです。
。
すべての依存関係を強制的にダウンロードする場合は、mavenリポジトリ全体を再初期化することができます。 この記事 で既に説明したように、次を使用できます。
mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
〜/ .m2/repository ...../actual_pathを削除するだけです。無効なLOCは削除されたjarファイルを強制的に再ダウンロードするため、無効なLOCが来ます。 リポジトリフォルダー全体を削除しない代わりに、エラーが発生している場所から特定のフォルダーを削除します。
X
のグループIDがわかっている場合、このコマンドを使用して、X
とその依存関係をすべて再ダウンロードできます。
mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x
dependency:purge-local-repository
の使用を提案する他の回答と同じことを行いますが、X
に関連するすべてを削除して再ダウンロードするだけです。