web-dev-qa-db-ja.com

Maven:案件記述子の読み取りに失敗しました

私は誰かが私が苦労している問題で私を助けることができると思っています。

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

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-utils jarファイルは別のプロジェクトによって作成され、このプロジェクトと他のプロジェクトとの間で共有されます(他のプロジェクトも構築しませんが、それは別の問題によるものです)。

私は問題なく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で見てもエラーを報告しません。

誰かが私がここで見逃しているか間違っていることを私に言うことができますか?

218
Morrislgn

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

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

148
Gal Bracha

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

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

121
bzuillsmith

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

  • Fileに行く
  • Settingsを選択
  • Build, Execution, Deploymentsを選択
  • ドロップダウンからBuild Toolsを選択してください
  • ドロップダウンからMavenを選択します
  • Always update snapshotsチェックボックスをオンにします

screen shot of IntelliJ 2017.2 > Preferences/Settings > Build, Execution, Deployment > Build Tools > Maven > Always update snapshots (checkbox)

77
prime

Eclipseを使用している場合は、プロジェクト - >プロパティ - > Mavenを右クリックし、 "を確認してください。ワークスペースプロジェクトから依存関係を解決する "はクリックされていません。

お役に立てれば。

35
tharindu_DG

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

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

Update Maven Project Dialog Box

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

27
IamVickyAV

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

21
rrs

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

  • .m2/repositoryに移動して、関連付けられているディレクトリを消去します
  • eclipseでupdate mavenの依存関係を実行する

エラーは消えました....私のmvnコマンドラインがそれらのディレクトリとEclipse .m2Eclipseで動作しなかった理由は、私にはわかりません、そしてそれはちょっと吸います。私のプロジェクトはEclipseで再び動作しています。

11
Dean Hiller

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

9
17sprints

私はIntelliJを使用して同じ問題を抱えていた。 pom.xml> Maven> Reimportを右クリックして解決した

7
rlopezo

「成果物記述子の読み取りに失敗した」問題は、一般的にMavenリポジトリ内の依存関係のpomファイルに問題があることを示しています。 POMファイルの名前がMavenが期待する名前と同じであるかどうかを二重チェックし、POMファイルの内容が有効かどうかをチェックすることをお勧めします。

6
eaykin

プロジェクトがあります

 A/
 |--a1
 |--a2

今私たちの組織に別のプロジェクトがあります。

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

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

どちらのプロジェクトも私の地元のEclipseでチェックされています(SVNから)。私は積極的にAに取り組んでいます。

私はBで開発された良い共通の機能(b4)があることを知るようになりました、そして私はそれを使う必要がありました。

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

B4の開発者は、このb4モジュールを組織のリポジトリの成果物としてデプロイしました。私は自分のモジュールのPOM、すなわちa2のpom.xmlへの依存を含めました。 Eclipseがrepoから必要な成果物をダウンロードしたので、そこにクラスをインポートできました。

今度は問題が始まります...私は何らかの目的でb4のソースコードをチェックする必要があり、私は既にローカルのEclipseでBをチェックアウトしていたのでSVNからそれを更新し、モジュールb4をチェックアウトしました。また、clean、packageなどのターゲットを使用してモジュールb4のpom.xmlを実行しました。コーディングを終えた後、モジュールa2のJARを作成する必要がありました。私はa2のpom.xmlとBAMで "package"を実行しました。 a2モジュールのエラーnエラー..これらのエラーも非常にユーザーフレンドリーではありませんでした。唯一のことは、ログに確かにb4の名前があったということです。

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

ここで重要な点は、b4がワークスペースにある場合はb4をインストールしないことです。あなたは完全なBをクリーンインストールする必要があるでしょう。私はZuillから答えを読んだ後にこの解決策を見つけました

編集:ローカル環境でBプロジェクトをチェックアウトしていない場合は、この問題が発生しなかった可能性があります。私はBが私のローカルワークスペースでチェックアウトしたことが原因で起こったと思う傾向があります。

4
simpleDev

com.morrislgn.merchandising.commoncom.johnlewis.jec.webpim.commonという2つの異なるグループIDに言及しました。たぶんこれは問題です。

3
phlogratos

私にとっては、それが実際に依存関係POMの問題であるように思われます。

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

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
3
Phil Rykoff

Eclipseを介した運の更新はありませんでした。 mvn clean install -Uを使用しなければなりませんでした(これですべてが解決しました)。

3
Toothless Seer

参照 Mavenエラー「転送に失敗しました...」

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

私にとっては、「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 . 
3

私たちの場合、マルチモジュールMaven構成のプロジェクトの一部が他のプロジェクトを参照している間に、誤ったgroupIdの名前変更が原因でエラーが表示されました。

2つのモジュール(billing-parentbilling)を持つアグリゲータープロジェクト(billing-api)がありました。

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

プロジェクトbillingbilling-apiに依存しています。そのため、pom.xmlには以下が含まれていました。

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

GroupIdの名前をcom.company.teamからcom.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
Lu55

私はしばらく同じ問題を抱えていましたが、mvn -U clean installを実行しても問題は解決しませんでした。

私はようやく.m2フォルダ全体を削除することで問題を解決し、それから私のIDEを再起動すると問題は解決しました!

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

2
sakhoshdel

私は同様の問題を抱えていました。私の場合は、.m2/repositoriesフォルダーのtestngのバージョンが壊れていましたが、それを削除して再びmavenを更新したところ、すべてうまくいきました。

1
William

あなたのワークスペースパスに行き、あなたのプロジェクトフォルダの中に行きなさい

次のコマンドを実行

mvn -Uクリーンインストール

あなたが好きに似たマッサージを見れば:

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

その後、次のコマンドを入力してください。

エクスポートMAVEN_OPTS = -Dhttps.protocols = TLSv1、TLSv1.1、TLSv1.2

それから再度命令を与えなさい

mvn -Uクリーンインストール

これで、エラーがなくなったことがわかります。

今きれいにし、mavenプロジェクトを構築します。

0
Abhijeet Kale

このエラーは基本的に、Mavenがローカルリポジトリから特定の依存関係を読み取ることができなかったことを言っています。 jarファイルが正しくダウンロードされなかったために起こることがあります。だから、あなたのMavenのローカルリポジトリに行き、。lastUpdated拡張子ファイルがないことを確認してください。

0
Sandoval0992

私はMavenを初めて使ってSTS Eclipseを使い始めました。私がセットアップしたプロジェクトには、すでに独自のsettings.xmlがありました。その場合は、実行設定でsettings.xmlファイルを更新してください。

  1. pom.xmlを右クリックし、[別のユーザーとして実行] - > [実行構成]をクリックします。

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

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

0
Jose Peralez

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

0
gary69