2011-06-30 10 views
7

このようにorg.carrot2commons-httpclient 3.1に依存しますので、どうすればをHttpClient 4.1.1に変更できますか。私は日食で働いています。このjarファイルに依存している人から commons-httpclient:3.1を削除したいので、私はHttpClient 4.1.1と置き換えたいと思っています。サードパーティ製のjarファイルの依存関係を無効にします

私は何をしようとしていたのですか。私はこのorg.carrot2を依存関係階層フォルダから二重にして、そのpom.xmlファイルに入り、commons-httpclient 3.1をhttpclient 4.1.1に変更しようとしていましたが、バックスペースとしておよび削除するには、その上で動作していない。..

任意の提案は

答えて

13

まず、上記の成果物がHttpClient 4.1.1で正しく動作することを確認してください。

それはhttp://maven.apache.org/pom.html#Exclusions

除外で言及されているとして私たちは、明示的に依存関係です 指定されたプロジェクトを含めたくない というMavenを伝える 各依存関係のために、「除外」を定義することができます(つまり、 の推移的従属性)

除外:除外には1つまたは 他の除外要素、それぞれ にはgroupIdが含まれ、artifactIdには が除外対象となります。 をインストールして使用するかどうかを指定するオプションとは異なり、除外 は、自分自身を 依存ツリーから積極的に削除します。

<dependencies> 
    <dependency> 
    <groupId>the_group</groupId> 
    <artifactId>the_artifact</artifactId> 
    <version>the_version</version> 
    <exclusions> 
     <exclusion> 
     <groupId>the_apache_group</groupId> 
     <artifactId>the_http_client_artifact</artifactId> 
     </exclusion> 
    </exclusions> 
    </dependency> 

    <dependency> 
    <groupId>the_apache_group</groupId> 
    <artifactId>the_http_client_artifact</artifactId> 
    <version>4.1.1</version> 
    </dependency> 
    ... 
</dependencies> 

私は、この要件を達成するために役立つことを願っています。

ありがとう、

Charlee Ch。

+0

Chitsuk、replying..'に感謝<依存性> org.apache.solr Solrの-solrj 3.2.0コモンズ、HTTPClientのコモンズ、HTTPClientの org.apache .httpcomponents httpclient 4.1.1 'このように、私はcommonshttpclientをhttpclient4.1.1からorg.apache.solr rの依存関係として削除していますight ?? – ferhan

+0

はい、あなたは正しいです。代わりに、HttpClient 4.1.1が使用されます。 –

+0

Chitsuk、と私はコモンズ、HTTPClientの 3.2.0コモンズ-のHTTPClientこれだけ ' org.apache.solr Solrの-solrjをコピーする必要がありますので、私はすでに私のpom.xmlにタグを依存関係しています org.apache.httpcomponents HTTPClientの 4.1.1 '右? – ferhan

2

があなたの POMをするのHttpClient 4.1.1に依存関係を追加します。..理解されるであろう。 Mavenは、あなたの直接の依存関係と間接的な依存関係の間の競合(httpClientのgroupIdとartifactIdが変更されていないと仮定します)を認識し、新しいバージョンを使用します。

そして、他の人のpomファイルを編集できないのは当然のことですが、ニンジンにあなたの新しいクライアントだけを使用させたいのです。プログラムではなく、ニンジンを使用するすべてのプログラムで...

+0

@meriton、どのように私はHttpClient 4.1.1に依存関係を追加できますか。 'org.carrot2'は' HttpClient 4.1.1'を 'commons-httpclient 3.1 'に依存させたいと思っています。 – ferhan

+0

pomがhttpclientやcarrotの依存関係を宣言するかどうかは関係ありません。すべてが同じクラスパスで終わります。ニンジンはあなたの依存関係の階層に何とかしてしまったので、依存関係を追加する方法を知っていると信じています... – meriton

+1

@meriton、私はこれを完了する必要が理由ですので、..それがあるとして、いくつかの他のプロジェクトに取り組んで、彼はこのプロジェクトを去っMと私はこの ' \t \t org.apache.httpcomponents \t \t を追加しましたHTTPClientの私のpom.xmlファイル内 \t \t 4.1.1 \t \t ''しかしコモンズ、HTTPClientの依存している者は、これに応じて、まだ3.1' ..です – ferhan

0

何かがHttpClient 3.xに依存する場合、完全に異なるAPIであるため、4.xを置き換えることはできません。 3.xに依存するコードにアクセスしようとすると、ランタイムエラーが発生します。

+0

あなたが私を覚えていればと思っています。あなたの提案に従って、私はHttpClient 4.1.1を使用して作業を始めました。新しいエラーが発生しています。 [リンク](http://stackoverflow.com/questions/6551774/http-1-1-401-authorization-required-with-httpclient-4-1-1) – ferhan

関連する問題