Maven:アーティファクト記述子の読み取りに失敗しました


258

私が苦労している問題を誰かが手伝ってくれることを願っています。

ターミナルからプロジェクトをビルドしようとすると、次のエラーが発生します。

Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT

common.test-data-utilsjarファイルが別のプロジェクトによって作成され、これと別のプロジェクト間で共有されている(他のプロジェクトは、いずれかのビルドされませんが、それは別の問題にダウンしています)。

私はcom.morrislgn.merchandising.common:test-data-utils問題なくビルドでき.m2、自分のマシンのローカルリポジトリに作成されたエントリを確認できます。Eclipseでもリポジトリのインデックスを再作成しました。

私のプロジェクトのPOMには次のエントリがあります。

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

これは私には正しいようです-POMは、Eclipseで表示したときにもエラーを報告しません。

誰かが私がここで欠けていることや間違っていることを教えてもらえますか?

回答:


183

あなたはいつでも試すことができます mvn -U clean install

-U リモートリポジトリの更新されたリリースとスナップショットを強制的にチェックします。


40
@MrPhi:m2eプラグインがある場合、Maven-> "Update Project ..."を使用できます。次のダイアログには、スナップショットとリリースの更新を強制するオプションがあります。
アーロンディグラ

1
@AaronDigullaエラーが発生しているのはそのダイアログボックスです。
Jeroen

1
これを機能させるには、プロジェクトのルートディレクトリ内でコマンドを実行する必要があります
Daria

私にも同様の問題がありました。これは本当に役立ちます。さらに、プライベートmvn repoを使用している場合は、~/.m2/setting.xmlまずそれをミラーセクションに追加し、次にを実行した後にmvn -U clean install確認してくださいReimport(プロジェクトを右クリックし、下部のMavenセクションの下にReimportボタンがあります) )。
JACK ZHANG

1
@TomaszWaszczyk:はい、あります。1.ウィンドウ表示->ターミナル。2.ローカルターミナルを追加します3. cd PomFilePath 4.コマンドを実行します
Vishnu Dahatonde

142

この問題は、親pomを参照する子プロジェクトがいくつかあり、親pomディレクトリ(mvn install親ディレクトリから実行)からインストールしていない場合に発生する可能性があります。子プロジェクトの1つが兄弟プロジェクトに依存している可能性があり、兄弟プロジェクトを読み込もうとすると、親pomディレクトリから少なくとも1回インストールしていなければ、質問に記載されているエラーが発生して失敗します。

プロジェクトを新しいコンピューターに移動するときにこの問題に遭遇しました。私は子プロジェクトからコマンドを実行する習慣があり、親に対してインストールを実行しませんでした。


13
さらに、mvn install親で実行する場合は-N、非再帰的な操作を追加することもできます。これにより、Mavenはすべてのモジュール(失敗したモジュールを含む)をスキップinstallし、親の目標のみを実行します。
Jacek Prucia、2015年

@JacekPruciaはpomアーティファクトもインストールする必要があることを知っておくとよい(親がpomの場合)
Adrian

@bzuillsmithなぜmvn install親pomで実行する必要があるのでしょうか。これは、兄弟の依存関係をダウンロードできるようにするためだけに使用されませんか?たまたま兄弟ディレクトリに移動しmvn install、そこからjarがローカルリポジトリにあるように実行した場合、これはまったく同じことを実現しませんか?
user2158382 2017年

mavenを使用してから数年になりますが、-はい、兄弟の依存関係を1つずつインストールできると思います。親からのインストールは、作業が少なくなる傾向があります(入力して実行するコマンドが少なくなります)。大規模なプロジェクトでは、すべての子プロジェクトをインストールしたくない場合があり、その場合は個別に実行する必要があります。
bzuillsmith 2017年

ch-multip-spring \ simple-parent \ simple-model \ pom.xmlのような私のプロジェクト、私はルートch-multip-springフォルダーからmvn clean installを実行します(simple-parentからではなく)、それは私の問題を同様に解決しました投稿のタイトルに。
IcyBrk 2018年

104

IntelliJ IDEAと同じ問題があり、以下が機能しました。

  • に行く File
  • 選択する Settings
  • 選択する Build, Execution, Deployments
  • Build Toolsドロップダウンから選択
  • Mavenドロップダウンから選択
  • Always update snapshotsチェックボックスにチェックを入れます

IntelliJ 2017.2のスクリーンショット>設定/設定>ビルド、実行、デプロイメント>ビルドツール> Maven>常にスナップショットを更新(チェックボックス)


1
これは私にとってはうまくいきましたが、理由はわかりません-コマンドラインからビルドしようとしていました。IntelliJからキャッシュされたものはありましたか?
goodOldFashioned 2018年

私も働いた!これがいかに苛立たしいか信じられません。ありがとう!
ベンアリーナ、

@ goodOldFashioned:この「常に更新」により、ローカルリポジトリの.... lastUpdatedファイルが上書きされました。-Uはコマンドラインから同じことを行います。そのため、intellijがローカルリポジトリを修正し、コマンドラインが再び機能しました。
Frischling 2018

シンプルで効果的
Ojonugwa Jude Ochalifu

2
インターネット全体を閲覧した後、ようやくこれがうまく
いき

37

Eclipseを使用している場合は、プロジェクト -> Maven- > Update Projectを右クリックします。[Mavenプロジェクトの更新]ダイアログボックスが開きます。

そのダイアログボックスで、[ スナップショット/リリースの強制更新 ]チェックボックスをオンにして、[ OK ]をクリックします。(下の画像を参照してください)

Mavenプロジェクトの更新ダイアログボックス

これは私のために働いた!


36

Eclipseを使用している場合は 、プロジェクト->プロパティ-> Maven右クリックし、「ワークスペースプロジェクトからの依存関係を解決する」がクリックされていないことを確認します。

お役に立てれば。


4
わたしにはできる。しかし、なぜか分かりませんか?この背後にある説明はありますか?
アナンド2017年

1
これは当初、12 decenciesが欠落していた、私のために動作しませんでした、これを実行した後、それは今74です
user2044822

27

私は会話にかなり遅れていることを知っていますが、私もこの問題を抱えていました。問題は私の会社のファイアウォールにあったと思います。私の解決策は、ネットワークから取り外し、オープンワイヤレスに接続して、Eclipse経由で更新を強制することでした。これはすべてを解決しました。



1
みんなありがとう!それは私のために働き、多くの時間を節約しました。
フェイガン

14

私はEclipseで同じ問題を抱えていましたが、Mavenビルドコマンドラインがうまく機能しましたが、これを試してください

  • .m2 / repositoryに移動し、関連付けられているディレクトリをワイプします
  • EclipseでMavenの依存関係の更新を実行する

エラーは解消されました... mvnコマンドラインがそれらのディレクトリで機能し、Eclipse .m2eclipseが機能しなかったのはなぜですか。私のプロジェクトは日食で再び働いています。


余談ですが、私たちはgradleに切り替えました.... antやmavenよりもはるかに幸せです...非常に素晴らしい設定です。
ディーンヒラー2013年

それがEclipse関連であるかどうかさえわかりません。IntelliJで同じ問題が発生し、問題のあるパッケージを削除して再実行できmvn clean installました
Jay

12

IntelliJを使用して同じ問題が発生しました。pom.xmlを右クリックして解決> Maven> Reimport


ええ、人生と同じくらい簡単です。とにかく、@ primeの答えは私のために働いた。
2018

10

この問題は、.jarファイルと.pomファイル以外のすべてのエラーが表示されたリポジトリフォルダーを削除することで解決しました。


Mavenローカルリポジトリ内の関連ファイルを削除してプロジェクト全体を更新することで、同じ問題も解決しました。
Ad Infininitum

8

「アーティファクト記述子の読み取りに失敗しました」の問題は通常、Mavenリポジトリー内の依存関係のpomファイルに問題があることを示しています。pomファイルの名前がmavenが期待する名前と同じであるかどうかを再確認し、pomファイルの内容が有効かどうかを確認することをお勧めします。


1
pom.xmlのチェックは役に立ちました。同じ依存関係が2回あることがわかりました(コピーと貼り付けのエラー)。クリーンアップ後、すべてが大丈夫でした。
Adam Boczek 16年

8

私にとっては、「User Setting.xml」の設定に関連していた

Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml . 

6

プロジェクトがあります

 A/
 |--a1
 |--a2

現在、私たちの組織には別のプロジェクトがあります

 B/
 |--b1
 |--b2
 |--b3

(すべてのモジュールa1、b1などと親プロジェクトA、Bには、親と子の標準のmavenルールに従って独自のpom.xmlがあります)

両方のプロジェクトは、私のローカル日食(SVNから)でチェックアウトされています。私はAに積極的に取り組んでいます。

Bで開発された優れた共通機能(b4)があることを知り、それを使用する必要がありました。

 B/
 |--b1
 |--b2
 |--b3
 |--b4 (NEW)

b4の開発者は、このb4モジュールをアーティファクトとして組織のリポジトリにデプロイしました。モジュールのPOM、つまりa2のpom.xmlへの依存関係を含めました。Eclipseはrepoからアーティファクトをダウンロードし、クラスをインポートすることができました。

ここで問題が始まります...何らかの目的でb4のソースコードをチェックする必要があり、すでにローカルのEclipseでBをチェックアウトしていたので、SVNから更新してモジュールb4をチェックアウトしました。また、クリーン、パッケージなどのターゲットを使用して、モジュールb4のpom.xmlを実行しました。コーディングを終えた後、モジュールa2のJARを作成する必要がありました。「パッケージ」をa2のpom.xmlとBAMで実行しました!! エラーa2モジュールのn個のエラー。唯一のことは、ログに確かにb4の名前があったことです。

解決策:多くの解決策を何時間も試行した後、Bのプロジェクトディレクトリ(つまり、.. / codebase / B)のコンソールから「mvn -U clean install」を実行しました。Bが親であるため、b4を含むすべてのモジュールに対してクリーンインストールコマンドが実行され、正常に実行されました。この後、親プロジェクトであるAに対して「mvn -U clean install」を実行しました。これでうまくいきました。a2モジュールがコンパイルされ、インストールされました(後でパッケージ化されました)。

ここで重要な点は、b4がワークスペースにある場合は、b4をインストールするだけではありません。完全なBをクリーンインストールする必要があります。Zuillからの回答を読んだ後、私はこのソリューションにたどり着きました

編集:ローカル環境でBプロジェクトをチェックアウトしていなかった場合、この問題は発生しなかった可能性があることに注意してください。これは、Bが自分のローカルワークスペースでチェックアウトしたために発生したと考えがちです。


5

2つの異なるgroupIdsとについて言及com.morrislgn.merchandising.commonしているcom.johnlewis.jec.webpim.common。多分これが問題です。


良い点-いいえ、残念ながらそうではありません。POM XMLから間違ったタグをコピーしました。これは、必要なタグの上にあるタグで、自分がしたことを見つけられませんでした。おっと!私の愚かさを修正するために質問を編集しました!
Morrislgn 2011


4

日食による更新はありませんでした。mvn clean install -U(すべてを解決)を使用する必要がありました。


10
Gal Brachaもこれに答えました。有効な回答に投票し、必要に応じてコメントを追加することをお勧めします。
ブライアンホワイト

4

私にとっては、依存関係のPOMに問題があるようです。

私はjitpack仮想リポジトリを使用してそれを回避しました。これにより、独自のPOM(私の場合は間違っているようです)ではなく、URLに基​​づいてgithubリポジトリを含めることができます。

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

3

私はしばらくの間同じ問題を抱えていましたmvn -U clean installが、問題が解決されませんでした!

.m2フォルダ全体を削除してIDEを再起動することで問題を解決し、問題は解消しました!

したがって、ローカルのmavenリポジトリーに互換性がないか問題があるために、問題が発生することがあります。


オフラインでMavenの再同期を試行し、IntelliJを完全にホースしました。あなたのアドバイスに従って、.m2を削除しました、そして今、それは魅力のように働いています!ありがとう!
Victor Grazi 2017年

3

私たちのケースでは、マルチモジュールMaven構成のプロジェクトの一部が他のものを参照しているときに、誤ったgroupIdの名前変更が原因でエラーが発生しました。

billing-parent2つのモジュール(billing-apibilling)を含むアグリゲータープロジェクト()がありました。

com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing

プロジェクトbillingはに依存していbilling-apiます。したがって、その中pom.xmlには:

<dependency>
    <groupId>com.company.team</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

groupIdの名前をからに変更することにしましcom.company.teamcom.company.team.billing。私たちは、親の中に古い値を置き換えるpom.xmlとで<parent>両方のモジュールのセクション。しかし、上記の依存関係を更新するのを忘れていました。したがって、billingプロジェクトが古いbilling-apiアーティファクトを参照する構成がありました。最終的には、billingしばらくしてから次のようなエラーでモジュールのビルドに失敗します

[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>

billing-apiモジュールがエラーなしでビルドされるという事実にもかかわらず。

解決方法1:名前の変更groupIddependencyにも。

解決策2:交換するgroupIdことにより、${project.groupId}このようなプロパティ:

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>billing-api</artifactId>
    <version>${project.version}</version>
</dependency>

結論。 したがって、マルチモジュール構成でエラーが発生した場合の私のアドバイス:徹底的に確認してくださいgroupIdし、artifactId隣のモジュールの依存関係の。


2

プロジェクトフォルダー内のシェルを介して移動し、次のコマンドを実行します。

mvn -U clean install

通常、これで問題は解決します。

次のようなメッセージが表示された場合:

プロジェクトの依存関係を解決できませんでした:war:0.0.1-SNAPSHOT:com.sun.jersey:jersey-server:jar:1.9で依存関係を収集できませんでした

次に実行します:

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

に続く:

mvn -U clean install

再び依存関係を更新します。

その後、クリーンなmavenビルドを実行します。

maven clean install

1

同様の問題がありました。私の場合、.m2 / repositoriesフォルダー内のtestngのバージョンは壊れていましたが、それを削除して再度Mavenの更新を行ったところ、すべて正常に動作しました。


0

私は日食でこの問題を抱えていましたが、機能mvn -U clean installしませんでしたが、プロジェクトを右クリックして、Maven-> Update Projectを選択すると修正されました。


0

初めてMavenを使用してSTS Eclipseを使い始めました。私がセットアップしたプロジェクトには、すでに独自のsettings.xmlがありました。この場合は、実行構成のsettings.xmlファイルを更新する必要があります。

  1. pom.xmlを右クリックし、「実行」->「構成を実行...」

  2. 「ユーザー設定」と表示されている場所で、[ファイル]ボタンをクリックして、settings.xmlを追加します。

  3. これはあなたのプロジェクトに固有のものだと思いますが、私の「目標」は「クリーンインストール」に設定されており、「スキップテスト」をチェックしました。


0

このエラーは基本的に、Mavenがローカルリポジトリから特定の依存関係を読み取れなかったことを示しています。jarファイルが正しくダウンロードされなかったために発生した可能性があります。したがって、mavenローカルリポジトリに移動し、.lastUpdated拡張ファイルがないことを確認します。


0

これは私を助けました:

IDE(私の場合はRed Hat CodeReady Studio)から。

Windows->ビューの表示->ターミナル->ローカルターミナルを開く/追加

次のようにコマンドを実行します>

$ cd /pom-file-path/

$ mvn -U clean install


-4

私はmavenのsetting.xmlとリポジトリを変更することでこの問題を解決しました


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