Gradle groovy 和 RestAssured groovy 之间的版本冲突
Posted
技术标签:
【中文标题】Gradle groovy 和 RestAssured groovy 之间的版本冲突【英文标题】:Conflicting versions between Gradle groovy and RestAssured groovy 【发布时间】:2022-01-03 22:59:20 【问题描述】:我正在尝试运行使用 RestAssured useRelaxedHTTPSValidation() 方法的自动化测试,但执行失败并出现以下错误消息。
我正在使用 gradle 进行构建,这是我正在尝试恢复的旧项目。
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-xml is loaded in version 2.5.8 and you are trying to load version 3.0.8
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:524)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:54)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
... 15 more
附加信息:这是我的 gradle.build 文件,可能存在一些我没有意识到的依赖问题
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'io.qameta.allure'
sourceCompatibility = 1.8
//buildScan termsOfServiceUrl = "https://gradle.com/terms-of-service"; termsOfServiceAgree = "yes"
repositories
jcenter()
mavenCentral()
repositories
maven url 'https://jitpack.io'
buildscript
repositories
jcenter()
dependencies
classpath "io.qameta.allure:allure-gradle:2.8.1"
dependencies
compile group: 'org.testng', name: 'testng', version: '7.4.0'
compile group: 'com.codeborne', name: 'selenide', version: '5.6.1'
compile group: 'io.appium', name: 'java-client', version: '7.3.0'
compile group: 'com.github.appium', name: 'java-client', version: '7.3.0' // should have the same version as io.appium java-client
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.19'
compile group: 'org.json', name: 'json', version: '20190722'
compile group: 'io.rest-assured', name: 'rest-assured', version: '4.2.0'
compile group: 'io.rest-assured', name: 'json-schema-validator', version: '4.2.0'
compile group: 'io.rest-assured', name: 'json-path', version: '4.2.0'
compile group: 'io.rest-assured', name: 'xml-path', version: '4.2.0'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.10.2'
compile group: 'org.awaitility', name: 'awaitility', version: '3.0.0'
compile group: 'log4j', name: 'log4j', version: '1.2.17'
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.26'
compile group: 'io.qameta.allure', name: 'allure-selenide', version: '2.15.0'
compile group: 'io.qameta.allure', name: 'allure-rest-assured', version: '2.15.0'
compile group: 'io.qameta.allure', name: 'allure-testng', version: '2.15.0'
allure
version = '2.15.0'
autoconfigure = true
aspectjweaver = true
allureJavaVersion = '2.15.0'
在下面的同一个文件中,我有一些自动化测试任务
【问题讨论】:
哪个版本的 Gradle,你有一个简单的复制器项目来显示问题? 我在我的 PC 上使用 gradle 7.2,但我在项目中的 gradle.properties 文件有以下行:distributionUrl=https\://services.gradle.org/distributions/gradle-5.1 .1-所有.zip。我一直在使用 build.gradle 文件,以前它可以完美运行。 你在使用gradlew
?
运行这个命令来更新 gradle wrapper: ``` gradle wrapper --gradle-version 7.3 --distribution-type all ``` 你的插件可能会针对较新的 Gradle 版本进行更新,因此您需要确保使用更新的 Gradle 发行版。您的构建使用了许多已弃用的东西,但它应该仍然可以工作。
如果你声明了 allure 插件的版本(它可能在settings.gradle
中声明,如果是,我们可以确定它是为哪个版本的 Gradle 构建的),它可能工作得很好当您使用 ./gradlew ...
运行构建时...但几乎可以肯定,正确的做法是确保您使用的是该插件 (docs.qameta.io/allure-report/reporting/gradle) 和 Gradle 的最新版本。
【参考方案1】:
我遇到了依赖项问题。当执行 RestAssured 方法时,与其关联的 groovy 版本比已经执行的版本旧。我使用 CLI 导航到 gradle 文件所在的目录,执行“gradle -dependencies”,并根据 gradle 告诉我的内容更新依赖项。在此之后它开始工作。
【讨论】:
以上是关于Gradle groovy 和 RestAssured groovy 之间的版本冲突的主要内容,如果未能解决你的问题,请参考以下文章