spring-gradle-plugins / dependency-management-plugin

A Gradle plugin that provides Maven-like dependency management functionality
690 stars 88 forks source link

Support for implementation / api configurations of java-library plugin + deprecation of compile configuration #242

Closed gavenkoa closed 5 years ago

gavenkoa commented 5 years ago

Docs + announces:

My simple project:

plugins {
    // id "org.springframework.boot" version "2.1.3.RELEASE"
    id "io.spring.dependency-management" version "1.0.7.RELEASE"
    id "java-library"
}

repositories {
    jcenter()
}

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Cairo-SR7'
    }
}

dependencies {
    api 'org.springframework:spring-core'
    implementation 'org.springframework:spring-core'
    compile 'org.springframework:spring-core'
}

When I run Gradle 4.10:

gradle dependencies --configuration compile
compile - Dependencies for source set 'main' (deprecated, use 'implementation' instead).
\--- org.springframework:spring-core -> 5.0.12.RELEASE
     \--- org.springframework:spring-jcl:5.0.12.RELEASE

gradle dependencies --configuration api
api - API dependencies for source set 'main'. (n)
\--- org.springframework:spring-core (n)
(n) - Not resolved (configuration is not meant to be resolved)

gradle dependencies --configuration implementation
implementation - Implementation only dependencies for source set 'main'. (n)
\--- org.springframework:spring-core (n)
(n) - Not resolved (configuration is not meant to be resolved)
gavenkoa commented 5 years ago

I can avoid configuration is not meant to be resolved by (during configuration phase) by:

configurations.implementation.canBeResolved = true
configurations.api.canBeResolved = true

In this case resolution succeeded:

$ gradle dependencies --configuration implementation
implementation - Implementation only dependencies for source set 'main'.
\--- org.springframework:spring-core -> 5.0.12.RELEASE
     \--- org.springframework:spring-jcl:5.0.12.RELEASE

My apologies. Plugin properly handles api / implementation configurations...

It was glitch in IDEA IDE that induced me to play with minimal Gradle project and my confusion with lazy configurations...