У меня есть проект, который зависит от commons-httpclient [2.0] (компиляция).
Я хотел бы написать несколько тестов jbehave - jbehave-core 3.4.5 (test). Обе эти зависимости зависят от commons-lang, но в разных версиях - 1.0.1 и 2.5.
Когда я выполняю пакет mvn, я получаю [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 во время компиляции.