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

问题描述 投票:1回答:1

在我的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版本。但是,由于我没有声明这一点,我不确定为什么使用这个或者我可以强制使用正确的一个?

java gradle testng
1个回答
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
…

换句话说,你声明的compileorg.uncommons:reportng:1.1.4的依赖性对TestNG具有传递依赖性,Gradle将其解析为最新的TestNG版本 - 因为你没有为compile配置明确声明任何其他TestNG依赖。请注意,您只能直接依赖testCompile配置中的TestNG!

您应该能够通过更改TestNG依赖关系声明来解决此问题,如下所示:

compile group: 'org.testng', name: 'testng', version:'6.14.3'
© www.soinside.com 2019 - 2024. All rights reserved.