문제

In my gradle build script, I forced 3.1.0 release libraries for spring framework. I see that this resolution strategy change is applied to compile, testCompile, testRuntime but not to runtime as visible from 'gradle dependencies' output.

allprojects {
        configurations.all {
            resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                if ( details.requested.group == 'org.springframework' ) { 
                    details.useVersion = '3.1.0.RELEASE'
                }
            }
        }
    }

gradle dependencies output:

compile - Compile classpath for source set 'main'.
+--- org.codehaus.groovy:groovy-all:2.1.1
+--- com.company.mod1:module1:2.21.2

| +--- org.springframework:spring-core:3.0.0.RC1 -> 3.1.0.RELEASE

  |    |    +--- org.springframework:spring-asm:3.1.0.RELEASE
    |    |    \--- commons-logging:commons-logging:1.1.1
    |    +--- org.springframework:spring-context:3.0.0.RC1 -> 3.1.0.RELEASE
    |    |    +--- org.springframework:spring-aop:3.1.0.RELEASE
    |    |    |    +--- aopalliance:uopalliance:1.0
    |    |    |    +--- org.springframework:spring-asm:3.1.0.RELEASE


runtime - Runtime classpath for source set 'main'.
+--- org.codehaus.groovy:groovy-all:2.1.1
+--- com.company.mod1:module1:2.21.2
|    +--- org.springframework:spring-core:3.0.0.RC1
|    |    +--- org.springframework:spring-asm:3.0.0.RC1
|    |    \--- commons-logging:commons-logging:1.1.1
|    +--- org.springframework:spring-context:3.0.0.RC1
|    |    +--- aopalliance:aopalliance:1.0
|    |    +--- org.springframework:spring-asm:3.0.0.RC1
|    |    +--- org.springframework:spring-aop:3.0.0.RC1
|    |    |    +--- aopalliance:aopalliance:1.0
|    |    |    +--- org.springframework:spring-asm:3.0.

As you can compile dependencies got over written with 3.1.0.RELEASE but runtime did not. As a result when I distribute a zip for my project jar, I see 3.0.0. version spring libraries.

Is this a problem with my override or resolution strategy does not impact runtime libs? Do I need to include compile dependencies in distZip task? But this might create duplicate libs in the archive.

도움이 되었습니까?

해결책

found out the cause. resolutionStrategy code method was at the bottom of the build script. Once I moved it above all sub projects related build code, it reflected runtime dependencies too.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top