web-dev-qa-db-ja.com

EclipseでMaven POMファイル依存関係階層を開く際のエラー-「プロジェクト読み取りエラー」

POMファイルを開き、下部の[依存関係階層]タブをクリックすると、「プロジェクトの読み取りエラー」というエラーが表示されます。このワークスペースではなく、同じワークスペース内の他のプロジェクトで機能します。何か案は?

enter image description here

[〜#〜] edit [〜#〜]

@Yhnの回答に応えて。

  1. コマンドラインからEclipseの外部でコンパイルおよびパッケージフェーズを実行すると、期待どおりに動作します。アプリケーションをコンパイルし、最終的なWARファイルをビルドします。
  2. 実際、EclipseはMavenのsettings.xmlファイルのデフォルトの場所を指しているので、Eclipseで定義されているカスタムリポジトリを認識する必要があります(私の会社は独自のMavenリポジトリを持っています)。
  3. EclipseからPOMファイルを開いて編集できるため、ファイルへの読み取り/書き込み権限が必要です。
  4. このプロジェクトはEclipseでMavenプロジェクトとして構成されていないため、Eclipseからパッケージフェーズを実行できません(コマンドラインからのみ実行できます)。

どうやら推移的な依存関係の一部がMaven 1に設定されているため、Maven 3でプロジェクトをビルドするのに問題があったという事実と関係があるのでしょうか? Maven 3はサポートしていません (これとにかく、いくつかのエラーメッセージに基づいた私の理論です)。 Maven 2でプロジェクトをビルドできますが、まだ次のようなメッセージが表示されます。

_Downloading: http://dist.codehaus.org/mule/dependencies/maven2/org/codehaus/xfie/bcprov-jdk14/133/bcprov-jdk14-133.pom
[INFO] Unable to find resource 'org.codehaus.xfire:bcprov-jdk14:pom:133' in repsitory mule (http://dist.codehaus.org/mule/dependencies/maven2)
_

ただし、JARを正常にダウンロードしてアプリケーションをビルドできるため、これらの依存関係を見つけることができる必要があります。問題は、依存関係にPOMファイルが関連付けられていないことであるため、Maven 3で使用できない場合があります。これが、Eclipseで依存関係階層を表示できない理由である可能性があります。

EDIT 2

「構成> Mavenプロジェクトに変換」に移動して、プロジェクトをMavenプロジェクトに変換しました。 POMファイルを開くと、次のエラーが表示されます。

ArtifactDescriptorException: Failed to read artifact descriptor for woodstox:wst (Click for 140 more)

(woodstox:wstは、プロジェクトの他の推移的な依存関係です)。プロジェクトのすべての依存関係と推移的な依存関係の「マーカー」ビューにエラーが表示されます。ただし、「実行> Mavenビルド」を実行することで、プロジェクトを正常にビルドできます。 (Edit:これは、このプロジェクトにJavaソースコードはないが、依存関係のJARは正しく表示されるためです。最終的なWARで。)依存関係階層は同じエラーをまだ-「プロジェクト読み取りエラー」与えます。

「リソースが見つかりません」というメッセージについてですが、これは少数の推移的な依存関係についてのみ表示されます。プロジェクトにはより多くの推移的な依存関係がありますが、これらのメッセージは表示されません。依存関係にはPOMファイルがないため、Mavenはプロジェクトがビルドされるたびにそれらを検索しようとするようです。これはPOMを持たないのが普通ですか??

リポジトリマネージャーを取得するにはどうすればよいですか?これは会社のMavenリポジトリにインストールする必要があるものですか、それとも自分のワークステーションにインストールできますか?

21
Michael

Mavenプロジェクトに含める必要がある非Maven jarでこの問題が発生しました。このmavenコマンドを使用して、jarをローカルリポジトリに配置します。

mvn install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

次に、pom.xmlでそれらを依存関係と呼びました。

    <dependency>
        <groupId>gov.nist</groupId>
        <artifactId>xccdf</artifactId>
        <version>1.2</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

これはしばらくはうまくいきましたが、Eclipseで何かをアップグレードしたに違いないので、説明したエラーが発生し始めました。

修正はローカルリポジトリからそれらを取り出し、mavenにpomを生成するよう求めるインストールファイルをやり直すことです:

mvn -DgeneratePom=true install:install-file -Dfile=/test/gov.nist.xccdf-1.2.jar -DgroupId=gov.nist -DartifactId=xccdf -Dpackaging=jar -Dversion=1.2

このコマンドにより、jarが置かれている(ローカルリポジトリ内の)同じディレクトリにpomが生成されます。

Eclipse mavenサポートの最近のバージョンでは、mavenビルドはまだmaven 2で実行されています(pom.xmlを右クリックした場合、たとえばmvnパッケージとして実行を選択します)。依存関係の分析は、埋め込みmaven 3プラグインを使用して行われますが、これはpom.xmlを持たない依存関係を好みません。

9
Glenn

同じ問題がありました。プロジェクトをMavenプロジェクトにした場合、次を実行する必要があります。

  • プロジェクトを右クリック|メイヴン|依存関係の更新または
  • プロジェクトを右クリック|メイヴン|プロジェクト構成の更新

それは私のために働いた。

7
OblongZebra

コメントを通して情報を与えられた:

mvn compile/mvnパッケージはコンソールを介して機能します(Eclipseの外部を想定しています)。それに基づいて、POMファイルは正しいはずであり、依存関係を解決できます。

しかしながら; Eclipseの設定が正しくない可能性があります。たとえば、Eclipseに(デフォルトの〜/ .m2/settings.xmlファイルの代わりに)独自のmavenプロパティがある場合; Maven自体が使用するsettings.xmlで構成された依存関係の解決に失敗すると想像できます。この設定は、Eclipse Preferences @ Maven> User Settingsで行う必要があります。

また、Eclipseが実際にファイルを読み取れることを確認してください(ロックされていない、権限が正しくないなど)。

これが正しいと思われる場合; Eclipseからmvnゴールコンパイルを実行できますか?これを行うには、プロジェクトを右クリックして[run as > maven package。この方法では、Eclipseが使用しているのと同じ設定でmavenを実行する必要があり、その構成に追加のエラーが表示される場合があります。

-追加情報への応答:

基本的に、Maven 2を使用している場合、指定されたリポジトリ(codehaus/mule)で依存リソース(この場合はbcprov-jdk14)を見つけることができないことを示します。そのmavenモジュール(bcprov-jdk14)を検索すると、Mavenセントラルリポジトリ(ローカルネクサス経由)@ repo1.maven.org/maven2 にあります。たぶんそれはあなたがMaven2で得ているエラーの原因ですか?

そして、Maven 3のドキュメントにあるように; Maven 1.xリポジトリの場合; Maven 2リポジトリとして提供できるレポジトリマネージャーを介してプロキシする必要があります(Sonatype Nexus OSSを介していくつかのレポジトリでもここで行うと思います)

追伸:EclipseでMaven依存関係管理を有効にすると、Maven実行ターゲットを使用できるようになります。あなたがそれをテストしたい場合。

-

複数の問題が発生する可能性があるように聞こえます...通常のMavenビルドが正常に動作することを考えると、Mavenは少なくとも依存するアーティファクトとその依存関係を取得できると考えられます...しかし、Eclipseは。

Eclipseのインターネット接続設定が正しいかどうかを再確認しますか?あなたは会社のレポについて話していたので、おそらくプロキシもあると思います(プラグインのために(ただし、次のポイントを参照)、プロキシも使用するようにEclipseをセットアップする必要がありました)。

経験上、*。pom urlリクエストのルールベースのプロキシブロックを使用することもできます(ここでのプロキシは、ローカルリポジトリマネージャーの使用を強制するブロックをブロックします。そして、ブラウザで手動でダウンロードしようとする.pomファイルを開き、これが該当するかどうかを確認します(たとえば、できません...)。

リポジトリを設定するには、おそらくリポジトリの責任者にリポジトリをmaven2プロキシとして追加するよう依頼する必要があります。

少なくとも、Eclipseはインターネットから依存関係poms(依存関係ツリーを構築するために必要)を取得する問題を抱えているようです。あなたの会社でICT乗組員(十分な能力がある場合)...)にいつでも尋ねることができます。

3
Yhn
<properties>
    <!-- ********************** -->

    <!-- Plugin's properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <Java.version>1.7</Java.version>
</properties>

このポンポン設定は私のために働いた

1
traysine zheng

ネットワークに接続せずにpom.xmlに新しい依存関係を追加すると、同じ問題が発生しました。この後、「アーティファクトの欠落」、「ディスクリプタの欠落」、または「プロジェクト読み取りエラー」などの多くの問題が発生しました。これを解決しました

  1. ローカルリポジトリから追加したばかりの悪い依存関係を削除します。
  2. ローカルインデックスを再構築します。
  3. 依存関係を再追加します
1
jason zhang

通常、これはMavenが理解できないタイプミスがpomにある場合に発生し、Project read error。私の場合のように、私はMaven依存関係スニペットをコピーし、バージョンを渡しました。実際のバージョンを入力する代わりに、動的に取得していました${asciidoctorj.version}そして、私のPOMはプロパティセクションにこれを持っていませんでした。だから私はこのエラーを受け取りました。それを削除してバージョン番号を入力すると、機能し始めました。

0
Mike

今日も同じ状況に直面しました。私の場合、それは間違ったケースの依存関係名が原因です。例えば。

プロジェクトA->プロジェクトB->プロジェクトCプロジェクトBのpmファイルで、依存関係アーティファクトの名前を誤って「C」ではなく「c」で指定しました。

Mac OSと同様に、ファイルシステムでは大文字と小文字が区別されません。そのため、この間違いを検出せずにコマンドラインでビルドできます。

Eclipseでは壊れますが、非常に悪いエラーメッセージが表示されます。エラーリストでは、「依存関係の問題」と表示されますが、依存関係の名前は空です。また、POMのどの行が問題を引き起こしているかを特定することもできません。

POMビューアで「効果的なPOM」を開こうとすると、プロジェクトの読み取りエラーが表示されます。ポップアップエラーダイアログボックスに次のように表示されます。

Could not read maven project
Java.nio.channels.OverlappingFileLockException 

すべてのメッセージは無用で誤解を招くものです。

無駄な時間を費やしてJenkins CIに提出することで、この問題をようやく発見しました。

0
Jianwu Chen

別のマシンからローカルリポジトリフォルダーをコピーした後にこれがありました。修正したのは、コピーしたリポジトリフォルダーに移動し、「LastUpdated」ファイルとともに_remote.repositoriesを削除してから、EclipseでMavenの依存関係を更新することでした(Alt + F5)

0
reid