Gradle使用最新版本的TestNG而不是声明的版本

时间:2019-04-09 13:22:27

标签: java gradle testng

在我的gradle脚本中,我具有以下依赖性:

dependencies {
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version:'3.9.1'
compile group: 'io.github.bonigarcia', name: 'webdrivermanager', version: '2.2.4'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.6.2'
compile group: 'org.uncommons', name: 'reportng', version:'1.1.4'
compile group: 'com.google.inject', name: 'guice', version:'4.0'
compile group: 'org.apache.commons', name:'commons-math3', version: '3.6.1'
testCompile group: 'org.testng', name: 'testng', version:'6.14.3'
testCompile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'}

如此处所示,我要求使用6.14.3作为testng版本。仅当我尝试运行脚本时,才会出现问题:

Execution failed for task ':compileJava'.

我首先检查Java版本是否正确,但是那里没有问题。只有当我运行gradle --debug时。我发现下载的testng jar版本为7.0.0-beta4。但是由于我没有宣布这一点,所以我不确定为什么要使用它,或者我可以强制使用正确的吗?

1 个答案:

答案 0 :(得分:1)

运行./gradlew dependencies应该向您显示以下compile依赖性(在许多其他依赖性中):

…
+--- org.uncommons:reportng:1.1.4
|    +--- org.testng:testng:[5.0,) -> 7.0.0-beta6
|    \--- velocity:velocity:1.4
|         \--- velocity:velocity-dep:1.4
…

换句话说,您声明的对compile的{​​{1}}依赖性对TestNG具有传递性依赖性,Gradle解析为最新的TestNG版本-因为您未明确声明任何其他TestNG依赖性 org.uncommons:reportng:1.1.4配置。请注意,您仅直接依赖 compile配置中的TestNG!

您应该能够通过如下更改TestNG依赖项声明来解决此问题:

testCompile