enforcer-gradle-plugin icon indicating copy to clipboard operation
enforcer-gradle-plugin copied to clipboard

DependencyConvergence plugin fails, yet :dependencyInsight doesn't provide additional insight

Open flangknecht opened this issue 4 years ago • 1 comments

We've just added the DependencyConvergence enforcer rule to our project. Now it fails due to dependencies not converging (good so far). Trying to get insights into dependency resolution by running ./gradlew :neo-autoconfigure:dependencyInsight --configuration compileClasspath --dependency org.springframework.boot:spring-boot-autoconfigure

yields

* What went wrong:
A problem occurred configuring project ':neo-autoconfigure'.
> Could not resolve all dependencies for configuration ':neo-autoconfigure:compileClasspath'.
   > Conflict(s) found for the following module(s):
       - org.springframework.boot:spring-boot-autoconfigure between versions 2.3.1.RELEASE and 2.0.0.RELEASE
       - org.slf4j:slf4j-api between versions 1.7.30 and 1.7.25
       - org.springframework.boot:spring-boot between versions 2.3.1.RELEASE and 2.0.0.RELEASE
     Run with:
         --scan or
         :neo-autoconfigure:dependencyInsight --configuration compileClasspath --dependency org.springframework.boot:spring-boot-autoconfigure
     to get more insight on how to solve the conflict.

This instructs me to run gradle with the same command line I used above, not providing any further insight.

Running it with -Denforcer.enabled=false, we get the desired dependency resolution output.

We have the plugin configured like follows:

rule<DependencyConvergence> {
                enabled.set(true)
                failOnDynamicVersions.set(true)
                failOnChangingVersions.set(true)
            }

flangknecht avatar Oct 30 '20 15:10 flangknecht

Yes, this is a tough one as the error that appears in the console does not come from the enforcer but from Gradle when it resolves configurations. As such, there's no way the enforcer plugin can add an extra line to instruct users to skip the enforcer rule, as you have done.

aalmiray avatar Oct 30 '20 17:10 aalmiray