m2eclipseでArtifactResolutionExceptionが出て困った話。

Mavenのリモートリポジトリで管理されていないjarを、ローカルリポジトリに入れて参照することにしたのですが、mvn installは正常に完了したものの、プロジェクトから参照しようとするとArticactResolutionExceptionが発生してしまい、うまく動かないことがありました。

最初はpom.xmlの書き方をミスったかと思いましたが、エラーの内容を良く読むとapacheのstagingリポジトリを参照した際にUnauthorizedであると出力されています。

ArtifactDescriptorException: Failed to read artifact descriptor for com.ellipticgroup:bb:jar:20100601: ArtifactResolutionException: Failure to transfer com.ellipticgroup:bb:pom:20100601 from https://repository.apache.org/service/local/staging/deploy/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of apache/staging has elapsed or updates are forced. Original error: Could not transfer artifact com.ellipticgroup:bb:pom:20100601 from/to apache/staging (https://repository.apache.org/service/local/staging/deploy/maven2): Access denied to https://repository.apache.org/service/local/staging/deploy/maven2/com/ellipticgroup/bb/20100601/bb-20100601.pom. Error code 401, Unauthorized pom.xml /FileStoredMapBenchmark line 1 Maven Dependency Problem

試しにこの「apache/staging」のurlにブラウザからアクセスしてみたところ認証ダイアログが出たので、アクセスが制限されているようです。

ローカルリポジトリにinstallしたモジュールを参照する際、何故リモートリポジトリのapache/stagingを参照しているのかという疑問はあるものの、一旦このリポジトリの定義をpom.xmlから外したところ、この例外が出ずローカルリポジトリにinstallしたモジュールも正常に参照できました。

モジュールの参照の解決順序が、リモートリポジトリ→ローカルリポジトリの順なんですかね。アクセスできないリポジトリの定義をpom.xmlに入れておくのは、止めておいた方が良さそうです。