diff --git a/src/main/groovy/nebula/plugin/info/dependencies/DependenciesInfoPlugin.groovy b/src/main/groovy/nebula/plugin/info/dependencies/DependenciesInfoPlugin.groovy index d7e30c5..b57764b 100644 --- a/src/main/groovy/nebula/plugin/info/dependencies/DependenciesInfoPlugin.groovy +++ b/src/main/groovy/nebula/plugin/info/dependencies/DependenciesInfoPlugin.groovy @@ -30,6 +30,7 @@ import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionP class DependenciesInfoPlugin implements Plugin, InfoCollectorPlugin { private final DefaultVersionComparator versionComparator = new DefaultVersionComparator() private final VersionParser versionParser = new VersionParser() + private static final List RESOLVABLE_WITH_DEPRECATION_CONF_SUFFIXES = ['compileOnly', 'compile', 'runtime'] @Override void apply(Project project) { @@ -38,20 +39,22 @@ class DependenciesInfoPlugin implements Plugin, InfoCollectorPlugin { Map dependencies = [:] project.plugins.withType(InfoBrokerPlugin) { InfoBrokerPlugin manifestPlugin -> project.configurations.all( { Configuration conf -> - conf.incoming.afterResolve { ResolvableDependencies resolvableDependencies -> - if (project.configurations.contains(conf)) { - String resolvedDependencies = resolvableDependencies.resolutionResult.allComponents.findAll { - it.id instanceof ModuleComponentIdentifier - }*.moduleVersion - .sort(true, { m1, m2 -> - if (m1.group != m2.group) - return m1.group <=> m2.group ?: -1 - if (m1.name != m2.name) - return m1.name <=> m2.name // name is required - versionComparator.compare(new VersionInfo(versionParser.transform(m1.version)), new VersionInfo(versionParser.transform(m2.version))) - })*.toString().join(',') - if (resolvedDependencies) { - dependencies.put("Resolved-Dependencies-${resolvableDependencies.name.capitalize()}", resolvedDependencies) + if (canBeResolved(conf)) { + conf.incoming.afterResolve { ResolvableDependencies resolvableDependencies -> + if (project.configurations.contains(conf)) { + String resolvedDependencies = resolvableDependencies.resolutionResult.allComponents.findAll { + it.id instanceof ModuleComponentIdentifier + }*.moduleVersion + .sort(true, { m1, m2 -> + if (m1.group != m2.group) + return m1.group <=> m2.group ?: -1 + if (m1.name != m2.name) + return m1.name <=> m2.name // name is required + versionComparator.compare(new VersionInfo(versionParser.transform(m1.version)), new VersionInfo(versionParser.transform(m2.version))) + })*.toString().join(',') + if (resolvedDependencies) { + dependencies.put("Resolved-Dependencies-${resolvableDependencies.name.capitalize()}", resolvedDependencies) + } } } } @@ -64,6 +67,10 @@ class DependenciesInfoPlugin implements Plugin, InfoCollectorPlugin { } } + private boolean canBeResolved(Configuration conf) { + conf.isCanBeResolved() && !RESOLVABLE_WITH_DEPRECATION_CONF_SUFFIXES.any { conf.name.toLowerCase().endsWith(it.toLowerCase()) } + } + @CompileDynamic private void setInfoDependencies(Project project) { if (!project.rootProject.hasProperty('nebulaInfoDependencies')) { diff --git a/src/test/groovy/nebula/plugin/info/dependency/DependenciesInfoPluginSpec.groovy b/src/test/groovy/nebula/plugin/info/dependency/DependenciesInfoPluginSpec.groovy index 20e54d1..97410fd 100644 --- a/src/test/groovy/nebula/plugin/info/dependency/DependenciesInfoPluginSpec.groovy +++ b/src/test/groovy/nebula/plugin/info/dependency/DependenciesInfoPluginSpec.groovy @@ -44,19 +44,22 @@ class DependenciesInfoPluginSpec extends PluginProjectSpec { project.apply plugin: DependenciesInfoPlugin def guava = project.dependencies.create('com.google.guava:guava:21.0') + def slf4j = project.dependencies.create('org.slf4j:slf4j-api:1.7.30') project.repositories.add(project.repositories.mavenCentral()) def configurations = project.configurations - def config = configurations.compile - config.dependencies.add(guava) + def compileConfig = configurations.compile + compileConfig.dependencies.add(guava) + configurations.implementation.dependencies.add(slf4j) def detached = configurations.detachedConfiguration(guava) configurations.add(detached) configurations.remove(detached) - config.resolve() + compileConfig.resolve() detached.resolve() + configurations.compileClasspath.resolve() when: brokerPlugin.buildFinished.set(true)