1

数か月前から Maven (3.0.5) プロジェクトに取り組んでいますが、新しい開発環境を確立するときに突然このエラーが発生します (ローカル Maven リポジトリなし):

[ERROR] Failed to execute goal on project [100's of dependencies truncated]: Failed to read artifact descriptor for org.apache.httpcomponents:httpclient:jar:${httpcomponents.version}: Could not transfer artifact org.apache.httpcomponents:httpclient:pom:${httpcomponents.version} from/to nexus (http://bob.premitech.net:8081/nexus/content/groups/public): Illegal character in path at index 96: http://bob.premitech.net:8081/nexus/content/groups/public/org/apache/httpcomponents/httpclient/${httpcomponents.version}/httpclient-${httpcomponents.version}.pom -> [Help 1]

私はマルチモジュール プロジェクトを使用していますが、明らかに間違っていると思われるのは、${httpcomponents.version} が定義されていないことです。親pomで4.2.5として定義されていることを除いて。さらに奇妙なことに、プロパティを使用する代わりにバージョンをハードコーディングしても、エラー メッセージは変わりません。

http コンポーネントの依存関係を完全に削除しようとさえしました。これも何もしません。機能する唯一のことは、正しい依存関係をローカルの Maven リポジトリ (.m2) に手動でコピーすることです。これは、そもそも Maven を使用する目的を完全に無効にします。

ここで何が間違っているのか、誰にも少しでも分かりますか? 私が気付いていないある種のキャッシュメカニズムはありますか?

4

1 に答える 1

2

あなたが言ったように、POM でバージョンをハードコーディングしてもまだこのようなエラーが発生しますが、「正しくない」バージョンは他の依存関係から推移的に発生しているように思えます。IIRC、依存関係のプレースホルダーは Maven で置き換えられません。

たとえば、fooプロジェクトは独自の に依存してbar-frameworkおり、foobar-frameworkは に依存していhttpcomponentます。bar-frameworkバージョンのプロパティプレースホルダーも使用しています。そのような場合、POM にバージョンの置換されていないプロパティが含まれbar-frameworkている問題のある新しいマシンを構築した場合。その後、プロジェクトが正しいとしても、Maven は推移的な依存関係のために正しくない httpcomponent を解決する必要があります。bar-frameworkhttpcomponentfoo

mvn dependency:treeプロジェクトでどのように依存関係を取得しているかを確認してください。これはいくつかのヒントを与えるかもしれません。

于 2013-09-04T08:47:12.927 に答える