Maven 2 - разные версии зависимостей при тестировании и компиляции

У меня есть проект, который зависит от commons-httpclient [2.0] (компиляция).

Я хотел бы написать несколько тестов jbehave - jbehave-core 3.4. 5 (тестовая). Обе эти зависимости зависят от commons-lang, но в разных версиях - 1.0.1 и 2.5.

dependency

Когда я выполняю mvn package , я получаю [BUID FAILURE] в разделе тестов. В выводе модуля surefire-plugin есть исключение для моего тестового примера:

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

Как я смотрел в исходном коде - в commons-lang 1.0.1 - действительно, метода StringUtils.substringBeforeLast (...) нет. Почему maven использует commons-lang из commons-httpclient (компиляция), а не из jbehave-core при тестировании?

Я не могу позволить себе исключить эту конфликтную зависимость в commons-httpclient, поэтому он должен оставаться во время компиляции.

Итак, как это можно решить? - версия commons-lang 2.5 при тестировании и 1.0.1 во время компиляции.

12
задан Xeon 4 July 2011 в 20:19
поделиться