web-dev-qa-db-ja.com

Mavenがローカルアーティファクトを見つけられない

時折、Mavenは、ローカルにビルドおよびパッケージ化された特定の依存関係を、それを依存関係として持つ別のプロジェクトのビルド中にローカルリポジトリで見つけることができないと不平を言います。次のようなエラーが表示されます。

プロジェクトXで目標を実行できませんでした:プロジェクトXの依存関係を解決できませんでした:[archiva repository]のYがローカルリポジトリにキャッシュされていなかったため、内部の更新間隔が経過するか更新が強制されるまで解決は再試行されません- >

Xはビルド中のプロジェクトで、Yは欠落していると思われるアーティファクトです。ローカルリポジトリを見ると、アーティファクトがそこにあります。このアーティファクトはアーカイブリポジトリにインストールされることはないため、問題はローカルリポジトリにのみ基づいています。

Settings.xml、そしてもちろん「mvn -U」でさまざまなプロファイルを試しました。このアーティファクトはローカルリポジトリよりも先に進むことはないので、良いことも悪いこともありません。

動作していると思われる2つのことは、Mavenがスマートになるまで非常に長い時間待機するか、ローカルリポジトリを完全に削除することです。おそらく、待機オプションは前述の更新間隔に関連しています。

この問題は、maven 3.0.2および3.0.3で発生しています。私たちはArchiva 1.0.3を使用しています(ただし、これも要因にはなりません)。どんな助けも大歓迎です。

82
user1686620

ローカルMavenリポジトリは、アーティファクトディレクトリ内の「_maven.repositories」という名前のファイルを使用して、アーティファクトが最初にどこから来たかを追跡します。削除した後、ビルドは機能しました。 この回答 私のために問題を修正しました。

61
jhanson

ここでのオプションはうまくいかなかったので、解決方法を共有しています。

私のプロジェクトには、多くの子モジュールを持つ親プロジェクト(独自のpom.xml)があり、そのうちの1つ(A)は別の子(B)に依存しています。 Aでmvn packageを試しても、Bを解決できなかったため機能しませんでした。

mvn install親ディレクトリ内を実行するとジョブが実行されました。その後、Aの内部でmvn packageを実行でき、Bを見つけることができました。

30

オフラインモードであっても、依存関係の_remote.repositoriesマーカーがある場合、mavenはリモートリポジトリをチェックします。オフラインモードで操作する必要がある場合は、これらのファイルを削除する必要があります。

以下の単純なシェルコマンドは、これらのマーカーファイルを削除します。これは、マシンでオフラインモードのみを使用する場合に安全です。 Webからファイルを取得する必要があるマシンではこれを行いません。

この戦略は、Webから切断されたビルドサーバーで使用しました。リポジトリをそこに転送し、マーカーファイルを削除してから、オフラインモードで実行する必要があります。

Linux/Unixでは、この方法でリモートリポジトリマーカーファイルを削除できます。

cd ~/.m2
find . -name "_remote.repositories" -type f -delete
14
Jon

Mavenは、何かを見つけられなかったときを覚えています。重要なのは、「内部の更新間隔が経過するか、更新が強制されるまで解決は再試行されない->」です。

簡単な解決策は、問題のアーティファクトのローカル「リポジトリ」サブディレクトリを削除することです-問題を修正したと仮定します。 :)

mvn -Uは、リモートリポジトリからの更新を強制します-この場合も、前述のアーティファクトがリモートに入力されていると仮定します。

8
Andre

これが私に起こったのは、私が盲目的にsettings.xmlをテンプレートからコピーしたにもかかわらず、空の<localRepository/>要素が残っていたためです。これは、依存関係を解決するときにローカルリポジトリが使用されないことを意味します(ただし、インストールされたアーティファクトはまだデフォルトの場所に置かれます)。それを<localRepository>${user.home}\.m2\repository</localRepository>に置き換えると、動作し始めました。

* nixの場合、それは<localRepository>${user.home}/.m2/repository</localRepository>になると思います。

7
Paul Hicks

Mavenで見つかったエラーの1つは、settings.xmlファイルを間違ったディレクトリに置いたときです。ユーザーのホームディレクトリの下の.m2フォルダーにある必要があります。それが適切な場所にあることを確認してください(使用している場合はsettings-security.xmlと共に)。

0
Ashik Uzzaman

新しいプロジェクトがOracle jdbc jarに依存している場合(ローカルリポジトリにインストールし、他のプロジェクトで適切に動作します)、同様の問題が発生します。 -Uオプションを試して、.lastupdateファイルまたはディレクトリ全体を削除してもう一度ダウンロードしましたが、うまくいきませんでした。最後に、ディレクトリを削除してローカルに再度インストールしましたが、動作します。

0
yuxh

シェルスクリプトを介してローカルアーティファクトをインストールしたとき、Ubuntu LinuxにDependencyResolutionExceptionがありました。解決策は、ローカルのアーティファクトを削除し、それらを「手動で」再インストールすることでした。ターミナル経由でmvn install:install-fileを呼び出します。

0
naXa

私もこの問題に直面し、2つの方法で解決しました。

1)IDEでプロジェクトを選択し、すべてのプロジェクトを削除してから、プロジェクトを右クリックしてすべてのMaven依存関係をインストールします。これが完了したら、特定のプロジェクトを実行します

2)それ以外にできることは、エラーが発生している依存関係についてpom.xmlをチェックすることと"mvn clean install"それらdependentproject最初および問題に直面している現在のプロジェクトのインストールMaven依存関係。これにより、ローカルプロジェクトの依存関係が構築され、jarが作成されます。

0
Neha Tawar

すべてをキャッチします。ここで説明した解決策が機能しない場合(私の場合は発生します)、「。m2」フォルダー/ディレクトリからすべてのコンテンツを削除し、mvn clean installを実行します。

0
lupchiazoem