Mavenを使用してリリースの依存関係を強制的に再ダウンロードする


135

私は依存関係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-2」というタグを付けました。この問題を解決するために、Maven 3に-Uオプションが追加されました。アップグレードをお勧めします。
Mark O'Connor

方法論の観点から見ると、Xのpom を変更すると、パッチ番号の変更のみであっても、それは新しいリリースを構成するはずです:1.3-> 1.3.1。したがって、この問題は最初から解消されます。
jpaugh

ただし、スナップショットでも同様の問題が発生する可能性があるため、いくつかの回答をお勧めします。
jpaugh

回答:


164

Mavenに依存関係を再ダウンロードさせることはできませんが、代わりに実行できるのは、以下を使用して誤ってダウンロードされた依存関係をパージすることです。 mvn dependency:purge-local-repository

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


11
同じことじゃないの?
Svish 2013年

2
ファイルシステムへのアクセスは必要ありません。これは、ビルドジョブのみを構成する場合(CIシステムなど)に問題となる可能性があります。
Oliver Drotbohm 2014年

2
複数のプロジェクトが実行される場合mvn dependency:purge-local-repository clean package、別のプロジェクトがコンパイルを実行している間に、1つのプロジェクトがローカルリポジトリの同じ依存関係を削除する可能性があります。回避する方法は?
vikyd 2017年

55

〜/ .m2 / repositoryを削除したところ、再ダウンロードが強制されました;)


1
それは最後の手段として役立ちます。私は、日食とメイブンが少し「混乱」しているプロジェクトを持っていました。.m2フォルダーを削除するだけで、プロジェクトがコンパイルされ、正しく実行されます。
Leonardo

5
リポジトリ内から更新する必要があることがわかっている依存関係を選択的に削除することもできます。手動パージ。
jpaugh

41

私は次のコマンドがあなたを助けるかもしれないと思います!


mvn -U clean install

4
問題のMaven使用して依存関係を解放します。いいえ、これはより良いコメントだったかもしれません。
ナマン

31

Ali Tokmenの回答に感謝します。次のコマンドを使用して、特定のローカル依存関係を強制的に削除することができました。

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

これによりutils、.m2 / repositoryから削除され、utilsを実行すると常にJAR依存関係を再ダウンロードしますmvn clean install


1
Mavenに依存関係を再ダウンロードさせる方法が必要でした。これが実際にそれを行う唯一の答えですが、他の答えはすべてを取り除くことを提案します。ありがとう
smac89 2018

14

プロジェクトを右クリック-> Maven->プロジェクトを更新し、スクリーンショットのようにチェックボックスをオンにします。リリースも更新します:)

ここに画像の説明を入力してください


5
彼らが「/ Releases」の部分をどのように実装したかを知っておくとよいでしょう。
Ulises Layera '12年

これは私が必要とするものに感謝します。
JamesG 2017

12
mvn clean install -U

-Uは、依存関係を強制的に更新することを意味します。

cleanまたは-Uを使用せずに単一の依存関係を更新する場合は、ローカルリポジトリから削除してビルドするだけです。


繰り返しますが、これはSNAPSHOT依存関係を再ダウンロードするだけです。
Zardoz89

6

Xに追加したときは、Xのバージョン番号をインクリメントする必要があります。つまり、X-1.2である必要があります。
次に、X-1.2がインストール/デプロイされ、プロジェクトのXへの依存関係が新しいバージョンX-1.2に依存するように変更されているはずです。


6

のグループIDがわかっている場合はX、このコマンドを使用してすべてXとその依存関係を再ダウンロードできます。

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

これは、の使用を提案する他の回答と同じことdependency:purge-local-repositoryを行いますが、に関連するすべてのものを削除して再ダウンロードするだけXです。


4

すべての依存関係を強制的にダウンロードしたい場合は、Mavenリポジトリ全体を再初期化してみてください。すでに説明したこの記事のように、次のものを使用できます。

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

〜/ .m2 / repository ..... / actual_pathを削除してください。削除されたjarファイルを強制的に再ダウンロードするため、無効なLOCが来ています。エラーが発生している場所から特定のフォルダを削除する代わりに、リポジトリフォルダ全体を削除しないでください


0

を削除する~/.m2/repositoryと問題が解決します。しかし、それでも古いものを維持する必要がある~/.m2/repository場合は、Mavenローカルパスを一時的に変更するだけで済みます。

IntelliJで作業している場合は、Maven設定に移動し、ローカルリポジトリのパスを別の場所に変更します。近くの上書きチェックボックスをオンにする必要がある場合があります。

ここに画像の説明を入力してください


-1

上記のほとんどの回答で問題が解決します。

IntelliJを使用していて、自動的に修正する場合は、Maven設定に移動します。

ビルド、実行、デプロイメント->ビルドツール-> Maven

ここに画像の説明を入力してください

オフライン作業を無効にする

常にスナップショットを更新する(必要に応じて切り替える)を有効にする


1
反対投票の理由も教えていただければ幸いです。ありがとうございました。
Abhishek Nandgaonkar 2018

1
おそらく、スナップショットはリリースではないので、これは問題を解決しません。
soru

-2

ビルドパスに移動...既存のmavenライブラリーを削除u追加...ライブラリーの追加... maven管理依存関係...をクリックし、mavenプロジェクト設定をクリック... maven依存関係を解決するチェックボックスをオンにします。 Mavenの依存関係


2
これは、一部のIDEの使用を想定しており、質問でサポートされていない想定であり、どのIDEを指定することすらしていません!
Phil
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.