Spring boot gradle plugin forces version of Mockito

I have approximately the following setting:

test-utils/build.gradle:

 buildscript { repositories { jcenter() } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.3.1.RELEASE' } } apply plugin: 'java' apply plugin: 'spring-boot' dependencies { compile ('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.mockito' exclude group: 'org.hamcrest' } compile 'org.mockito:mockito-core:2.0.41-beta' compile 'org.assertj:assertj-core:3.3.0' } 

main/build.gradle:

 buildscript { repositories { jcenter() } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.3.1.RELEASE' } } apply plugin: 'java' apply plugin: 'spring-boot' dependencies { testCompile project(':test-utils') } 

But for some reason, it seems that the spring boot plugin forces the mockito version to return to 1.x:

 # ./gradlew :main:dependencies --configuration=testCompile testCompile - Compile classpath for source set 'test'. +--- project :test-utils +--- org.springframework.boot:spring-boot-starter-test: -> 1.3.1.RELEASE | +--- junit:junit:4.12 | +--- org.springframework:spring-core:4.2.4.RELEASE | \--- org.springframework:spring-test:4.2.4.RELEASE | \--- org.springframework:spring-core:4.2.4.RELEASE +--- org.mockito:mockito-core:2.0.41-beta -> 1.10.19 | +--- org.hamcrest:hamcrest-core:1.1 -> 1.3 | \--- org.objenesis:objenesis:2.1 \--- org.assertj:assertj-core:3.3.0 

If I take the spring loading module from the equation, everything will work as expected:

 # ./gradlew :main:dependencies --configuration=testCompile testCompile - Compile classpath for source set 'test'. +--- project :test-utils +--- org.springframework:spring-core:4.2.4.RELEASE (*) +--- org.springframework:spring-test:4.2.4.RELEASE | \--- org.springframework:spring-core:4.2.4.RELEASE (*) +--- junit:junit:4.12 +--- org.mockito:mockito-core:2.0.41-beta | +--- net.bytebuddy:byte-buddy:1.0.2 | \--- org.objenesis:objenesis:2.1 \--- org.assertj:assertj-core:3.3.0 

What is the spring boot plugin, and how can I say it is not?

+6
source share
2 answers

The main project has a Spring download plugin, so it uses Spring's Download Dependency Management. This means that by default, Spring will use the preferred version of the Mockito boot, regardless of the version specified in test-utils .

As described in the documentation , you can override the dependency version that Spring Boot manages by setting the corresponding property. For Mockito, this is a property of mockito.version . Add the following to the main project:

 ext['mockito.version'] = '2.0.41-beta' 
+4
source

I think you can use configuration settings to force the version

  allprojects { configurations.all { resolutionStrategy { rs -> rs.force "org.mockito:mockito-core:2.0.41-beta" } } } 
0
source

Source: https://habr.com/ru/post/1241689/


All Articles