Mavenの更新を強制する方法は?


731

既に動作しているプロジェクトを別のコンピューターにインポートし、依存関係のダウンロードを開始しました。

どうやら私のインターネット接続がクラッシュし、今私は以下を取得します:

    >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:
    Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:
    The following artifacts could not be resolved:
    org.springframework:spring-context:jar:3.0.5.RELEASE,
    org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,
    org.hibernate:hibernate-core:jar:3.6.0.Final,
    org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,
    org.aspectj:aspectjweaver:jar:1.6.8,
    commons-lang:commons-lang:jar:2.5,

    >mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.

    >Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000

Mavenを強制的に更新するにはどうすればよいですか?


補足:(プラグインSDKからの)Atlassian Mavenでこの問題があり、新しいバージョンにアップグレードすると問題が解決しました。
Wirone、2015年

回答:


1597
mvn clean install -U

-Uスナップショットの依存関係を強制的に更新することを意味します。この方法でリリースの依存関係を更新することはできません。


32
lwpro2に同意します。これで問題も解決しました。mvn cleanを実行するだけでは十分ではありません。ナビの答えでは問題を解決できません。
R.ヴァントゥイスク

1
アーチファクトを使用していて、リポジトリID「central」を使用している場合、メタデータは明らかにクリーンアップされないため、これはさらに複雑になると思います。
ggb667

2
これは実際にはスナップショット依存関係のjarファイルを更新しているようではなく、メタデータを更新しているだけです。
冷凍豆のロディ

依存関係の最後のダウンロードの失敗から生成された.lastupdatedファイルが原因である場合、この方法は機能しません
。RoberReiz

1
以前のバージョンとmaven 2.0.4までのヘルプを見ています。-Uフラグの説明は次のとおりです。「-U、-update-snapshots 2.0.5以降、リポジトリポリシーに関係なくすべてのスナップショットを更新する」 「-U、-update-snapshotsは、リモートリポジトリの更新されたリリースとスナップショットのチェックを強制します」そして、それはそれ以来そうです。どちらのバージョンも2007年にリリースされました。リリースも考慮して回答を編集する必要があるのでしょうか。
cleberz 2017年

93

ローカルリポジトリが、スナップショット(-Uおよび--update-snapshotsスナップショットの更新のみ)ではなく、リリースjarに対して何らかの方法で変更されている場合は、以下を使用してローカルリポジトリをパージできます。

 mvn dependency:purge-local-repository

その後、おそらくクリーンして再度インストールする必要があります。

 mvn dependency:purge-local-repository clean install

https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.htmlで利用可能な多くの詳細情報


8
私が実行するmvn dependency:purge-local-repositoryとすぐに、すべての依存関係が再び再ダウンロードされました。これはまさに私が欲しかったものです
smac89

92

-U すべての依存関係の更新を強制するようです。

クリーンアップせずに単一の依存関係を更新する場合、または -Uローカルリポジトリから削除してビルドすることができます。

更新の場合の以下の例slf4j-api 1.7.1-SNAPSHOT

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOT
mvn compile

ローカルのmavenリポジトリーを参照するmaven以外の別のツールを使用している場合、これはうまく機能します。
Mansoor Siddiqui、2015年

57

ここでの答えはすべて私にとってはうまくいきませんでした。私はハンマー法を使用しました:

find ~/.m2/ -name "*.lastUpdated" | xargs rm

これで問題が解決しました:-)


1
DJ2これは、内のすべてのファイルを削除します@ .m2という名前の-directory*.lastUpdated
sjngm

find ~/.m2/ -name "*.lastUpdated" -delete(多くのファイルが見つかった場合)いくつかの制限の危険を超えxargsたりそれrmを超えたりすることはありません。
Sz

45

から効果的に行うことができますEclipse IDE。もちろんそれを使っているなら。

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases

1
@ lwpro2の回答でコマンドラインバージョンを実行したため、コマンドラインでビルドできましたが、それでもEclipse内でビルドできませんでした。これを行うと、Eclipseを介してビルドできます。
ブリック

アップデートの実行後にEclipseを閉じて再度開いた場合にのみ機能します。
ceklock 2017年

33

誰かがプロジェクトのスナップショットの依存関係のみを更新し、アーティファクトをインストールしたくない場合に備えて:

mvn dependency:resolve -U

IDEに依存関係を再インポートすることを忘れないでください。IDEAでは、pomファイルを右クリックして、Maven-> Reimportを選択する必要があります。


13

ローカルリポジトリの内容がわからない場合は、次のオプションを使用してビルドを起動することをお勧めします。

-Dmaven.repo.local=localrepo

そうすれば、クリーンルーム環境での構築が確実になります。


5
このコマンドは、フォルダーlocalrepoをローカルリポジトリとして使用することを意味します。これは、単一のプロジェクトワークスペースでは問題ありませんが、複数のプロジェクトがあり、他のプロジェクトに依存しているプロジェクトが少ない場合は問題があります。次に、-Dmaven.repo.local = / data / my / localrepoDir
tgkprog

9

私の場合、最初に私がしたことは:

mvn clean install -U

それでも同じエラーが表示された後、プロジェクトを閉じて再び開きました。ついに働いた。


プロジェクトを
再度開か

4

Eclipse IDEを使用している場合:

  • プロジェクトを選択します。
  • Alt + F5を押すと、Mavenプロジェクトの更新ウィンドウがポップアップします。

  • チェック-スナップショット/リリースの更新を強制し、[OK]をクリックします。

Intellij IDEを使用している場合

  • 設定/ Mavenに移動します
  • 常にスナップショットを更新する

3

IntelliJ IDEを使用しましたが、同様の問題があり、解決するために、[Maven]タブの[Generate Sources and Update Folders for All Projects]をクリックしました。

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


2

他の状況でエラーが発生しました。だから私の解決策は質問に困惑している他の人に役立つかもしれません:

問題:ローカルリポジトリを別のコンピュータにコピーしましたが、このコンピュータには特別なリポジトリへの接続がありません。そのため、Mavenは無効なリポジトリーに対して成果物をチェックしようとしました。

私の解決策:_maven.repositoriesファイルを削除します。


2

これは、Mavenの最も厄介な点の1つです。私にとっては、次のことが起こります。依存関係を追加して、より多くの依存関係を要求しますが、接続が遅い場合、ダウンロードとタイムアウトの間に停止するように継ぎ合わせます。タイムアウトしていない間に、まだフェッチされていないすべての依存関係は.m2キャッシュ内のプレースホルダーでマークされており、プレースホルダーエントリーを(他の方法で)削除してキャッシュから削除しない限り、Mavenはそれを(決して)ピックアップしません。

私が見る限り、Mavenまたはより正確にはEclipse Mavenプラグインにはこれに関するバグがあります。誰かがこれを報告する必要があります。



1

android-maps-utils依存関係で同じエラーが発生しました。依存関係セクションでaarタイプのパッケージを使用すると、問題が解決します。デフォルトのタイプはjarなので、ダウンロードされるリポジトリの依存関係のタイプがチェックされる場合があります。


1

Eclipseからこの問題を修正するには:

1)以下の依存関係をMaven pom.xmlに追加し、pom.xmlファイルを保存します。

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.3.1</version>
</dependency>

2)プロジェクトに移動>> Maven >>プロジェクトを更新

プロジェクトを選択し、[OK]をクリックします。

3)オプションのステップ。ステップ2まで解決されない場合は、ステップ1を実行した後、以下のステップを実行します。

プロジェクトに移動>> Maven >>プロジェクトの更新>>チェックボックス「スナップショット/リリースの強制更新」にチェックを入れます

プロジェクトを選択し、[OK]をクリックします。


1

以前のバージョンのmavenは、mvn clean installで-Uを使用した場合、不足しているリリースのチェックを強制しませんでした。スナップショットのみですが、新しいバージョンではこれをサポートしています。

以前のバージョンでまだ苦労している人にとって、以下は役に立ちます-

Windowsの場合:

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

Linuxの場合:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

Mavenが何らかの理由(接続性/存在しないなど)で依存関係をダウンロードできない場合は常に、$ home / .m2ディレクトリの下のそれぞれのフォルダーにあるdependency-name.lastUpdateファイルに「.error =アーティファクトを転送できませんでした」が追加されます。これらのファイルを削除すると、Mavenは依存関係を再度フェッチするように強制されます。


0

mvn -Uを指定して実行する場合と-Uを指定せずに実行する場合の主な違いは-U、ローカルのSNAPSHOT jarがリモートのSNAPSHOT jarで上書きされることです。

jar mvn installを生成するprojの他のモジュールがある場合に、ローカルから作成されたローカルSNAPSHOT jar。


0

-Uは、maven Repoを強制的に更新するために使用されます。使用する

mvn -U clean install

これは、受け入れられた答えとまったく同じ答えです。6年前に与えられた...
カーウィン・スナイデル

@KerwinSneijders私が2年前に回答を追加したとき、受け入れられた回答は-Uがここで行うことに関する情報を提供しませんでした
Sanjeev Guglani

私が知る限り、受け入れられた回答には、投稿されたその日の情報が含まれていました。(12年3月14日)。そして、そうでなかったとしても、この情報は回答ではなく追加情報であるため、受け入れられた回答の下のコメントに投稿するほうがよい
Kerwin Sneijders

0

ここですべての答えを試しましたが、何もうまくいかなかったようです。最初にコンピュータを再起動してから実行しましたmvn clean install -U。それで問題は解決しました。


0

mavenが行うことは、プロジェクトのすべての依存関係をローカルリポジトリ(.m2フォルダー)にダウンロードすることです。インターネットがローカルリポジトリに問題を引き起こしているため、プロジェクトは問題に直面しています。これが確かに役立つかどうかはわかりませんが、.m2フォルダー内のリポジトリフォルダー内のすべてのファイルを削除してみることができます。ローカルリポジトリには何もないため、Mavenは依存関係を再度ダウンロードする必要があり、強制的に更新されます。通常、.m2フォルダーはc:users:[username] :. m2にあります。


-1

別の理由でこの問題が発生しました。私はMavenリポジトリhttps://mvnrepository.comに行って、Spring Coreの最新バージョン(当時は5.0.0.M3 /)を探しました。リポジトリには、pom.xmlの次のエントリが表示されました。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.0.0.M3</version>
</dependency>

私は素朴な愚か者ですが、コメントがjarがデフォルトのリポジトリにあると私に言っていると思いました。

しかし、多くのヘッドバンギングの後、XMLのすぐ下に「注:このアーティファクトはAlfrescoパブリックリポジトリ(https://artifacts.alfresco.com/nexus/content/repositories/public/)にあります」というメモが表示されました。」

したがって、XMLのコメントは完全に誤解を招くものです。jarは別のアーカイブにあります。そのため、Mavenはそれを見つけることができませんでした。


-3

以下のコマンドを使用して、リリースとスナップショットリポジトリの最新の更新を強制的に取得できます。

mvn --update-snapshots clean install

12
これは、受け入れられた答えとまったく同じ答えです。-Uは--update-snapshotsの短縮形です。
冷凍エンドウ豆のロディ

-3

私は同じエラーを抱えて実行していましたが、実行するmvn install -Umvn installうまくいきました。


10
「他のすべての回答で言及されていることも私に役立ちました」という回答は投稿しないでください。
2016年

-4

私は最近これに遭遇し、以下を実行するとすべての問題が修正されました

mvn -fae install

5
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continueそれは...未更新の外部依存関係を固定する奇妙な方法と思われる
ドナテッロ

-5

mvn clean install -U動作しません。しかし、mvn -U cleanその後に続きmvn clean installます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.