Найдите ниже некоторые фрагменты, чтобы решить проблему
проверить, существует ли транзитивная зависимость для groupid info.cukes
$ mvn dependency:tree | grep 'info.cuke'
[INFO] | +- info.cukes:cucumber-junit:jar:1.2.5:compile
[INFO] | | \- info.cukes:cucumber-core:jar:1.2.5:compile
[INFO] | | +- info.cukes:cucumber-html:jar:0.2.3:compile
[INFO] | | \- info.cukes:cucumber-jvm-deps:jar:1.0.5:compile
[INFO] | +- info.cukes:cucumber-testng:jar:1.2.5:compile
[INFO] | +- info.cukes:cucumber-java:jar:1.2.5:compile
[INFO] | +- info.cukes:gherkin:jar:2.12.2:compile
при проверке полного вывода показывает, какая ваша зависимость зависит от нее
...
[INFO] +- com.github.mkolisnyk:cucumber-report-generator:jar:1.3:compile
...
[INFO] | +- info.cukes:cucumber-junit:jar:1.2.5:compile
...
[INFO] | +- info.cukes:cucumber-testng:jar:1.2.5:compile
...
[INFO] \- ru.sbtqa.tag:cucumber-runner:jar:1.0.7:compile
[INFO] \- ru.sbtqa.tag:cucumber-runner:jar:1.0.7:compile
[INFO] +- ru.yandex.qatools.allure:allure-cucumber-jvm-adaptor:jar:1.6.4:compile
...
[INFO] | +- info.cukes:cucumber-core:jar:1.2.5:compile
...
[INFO] | +- info.cukes:cucumber-java:jar:1.2.5:compile
[INFO] | +- info.cukes:gherkin:jar:2.12.2:compile
...
[INFO] +- info.cukes:cucumber-junit:jar:1.2.5:compile
, поскольку может иметь место наложение классов с одинаковым квалифицированным именем, исключите эти временные зависимости в pom.xml
<dependency>
<groupId>com.github.mkolisnyk</groupId>
<artifactId>cucumber-report-generator</artifactId>
<version>1.3</version>
<exclusions>
<exclusion>
<groupId>info.cukes</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
при повторном запуске теста выдается исключение
java.lang.NoClassDefFoundError: gherkin/IGherkinDialectProvider
, поскольку мы явно определяем зависимость io.cucumber:gherkin
, она может быть связана с указанным <version>
, закомментируйте ее, чтобы узнать, будет ли выбрана другая версия
<!--<dependency>-->
<!--<groupId>io.cucumber</groupId>-->
<!--<artifactId>gherkin</artifactId>-->
<!--<version>6.0.14</version>-->
<!--</dependency>-->
это показывает, что io.cucumber:cucumber-core:jar:4.2.0
зависит от версии 5.1.0
из io.cucumber:gherkin
$ mvn dependency:tree
...
[INFO] +- io.cucumber:cucumber-core:jar:4.2.0:compile
[INFO] | +- io.cucumber:cucumber-html:jar:0.2.7:compile
[INFO] | +- io.cucumber:gherkin:jar:5.1.0:compile
С этими изменениями, по крайней мере, выполняется TestNG
модульное тестирование.
Как зависимости com.github.mkolisnyk:cucumber-report-generator
и ru.sbtqa.tag:cucumber-runner
в зависимости от info.cuke
, они могут работать некорректно. Чтобы решить эту проблему, вы можете:
- проверить наличие более новой версии, которая может не зависеть от идентификатора группы
info.cuke
- использовать более раннюю версию
io.cucumber
зависимостей
- использовать более детальное исключение зависимостей
info.cuke
вместо исключения всех идентификаторов артефактов
- комбинация вышеуказанных пунктов
- что-то еще, в зависимости от вашего варианта использования и требований
Может быть, эти шаги помогут вам найти решение, работающее на вас.