2011-07-04 3 views
10

私はcommons-httpclient [2.0](コンパイル)に依存するプロジェクトを持っています。Maven 2 - テストとコンパイルの異なる依存バージョン

jbehaveのテスト - jbehave-core 3.4.5(テスト)を書いてみたいと思います。 この両方の依存関係は、commons-langに依存しますが、1.0.1と2.5の異なるバージョンです。

dependency

私はMVNパッケージを実行すると、私はテストセクションで[BUIDのFAILURE]を取得します。 私のテストケースの例外は、確実な-プラグインの出力であり:

java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.substringBeforeLast(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 

私は、ソースコードで見たよう - コモンズ・ラング1.0.1で - 確かに、何StringUtils.substringBeforeLast(...)メソッドはありません。 mavenがなぜテストでjbehave-coreからではなく、commons-httpclient(コンパイル)からcommons-langを使用するのですか?

私はこの矛盾する依存関係をcommons-httpclientで除外する余裕がないので、コンパイル時にとどまる必要があります。

どうすれば解決できますか? - テスト時にはcommons-lang 2.5バージョン、コンパイル時には1.0.1。

答えて

6

<dependency>の2つの異なるタグを異​​なるバージョンと範囲で定義しようとします。テストには<scope>test</scope>タグを使用し、コンパイルには<scope>compile</scope>を使用します。

+0

テストテスト

+0

これは機能しました。ありがとう。 m2eclipseのプラグインでは、私は 'commons-httpclientサブカテゴリでは(矛盾の魔女2.5のために)コンパイルされていますが、これはおそらくm2eclipseの問題です – Xeon

+0

これは私にとってはうまくいかず、理由はわかりません - http:// stackoverflow .com/questions/9364511/maven-different-dependency-in-test –

関連する問題