Slackbot
03/01/2022, 2:08 PMLouis Jacomet
03/01/2022, 2:11 PMextendsFrom relationship. In that case, it is true that resolving a configuration locks it and all the ones it extends from, transitively.Chris
03/01/2022, 2:13 PMChris
03/01/2022, 2:13 PMLouis Jacomet
03/01/2022, 2:58 PMChris
03/01/2022, 3:49 PMChris
03/01/2022, 4:06 PMat org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.preventFromFurtherMutation(DefaultConfiguration.java:1070)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultLocalComponentMetadataBuilder.createConfiguration(DefaultLocalComponentMetadataBuilder.java:70)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultLocalComponentMetadataBuilder.addConfiguration(DefaultLocalComponentMetadataBuilder.java:44)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultRootComponentMetadataBuilder.addConfiguration(DefaultRootComponentMetadataBuilder.java:102)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultRootComponentMetadataBuilder.getRootComponentMetadata(DefaultRootComponentMetadataBuilder.java:96)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultRootComponentMetadataBuilder.lambda$buildRootComponentMetadata$0(DefaultRootComponentMetadataBuilder.java:86)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:352)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultRootComponentMetadataBuilder.buildRootComponentMetadata(DefaultRootComponentMetadataBuilder.java:84)
at org.gradle.api.internal.artifacts.ivyservice.moduleconverter.DefaultRootComponentMetadataBuilder.toRootComponentMetaData(DefaultRootComponentMetadataBuilder.java:70)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.toRootComponentMetaData(DefaultConfiguration.java:1193)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver$DefaultResolveContextToComponentResolver.resolve(DefaultArtifactDependencyResolver.java:227)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.builder.DependencyGraphBuilder.resolve(DependencyGraphBuilder.java:139)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.DefaultArtifactDependencyResolver.resolve(DefaultArtifactDependencyResolver.java:145)
at org.gradle.api.internal.artifacts.ivyservice.DefaultConfigurationResolver.resolveGraph(DefaultConfigurationResolver.java:186)
at org.gradle.api.internal.artifacts.ivyservice.ShortCircuitEmptyConfigurationResolver.resolveGraph(ShortCircuitEmptyConfigurationResolver.java:85)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph(ErrorHandlingConfigurationResolver.java:74)Chris
03/01/2022, 5:31 PMrepositories {
mavenCentral()
}
configurations {
foo
bar
all {
beforeLocking {
logger.warn "Locking $it"
}
}
}
dependencies {
foo 'org.slf4j:slf4j-api:1.7.25'
bar 'org.slf4j:slf4j-api:1.7.30'
}
tasks.register('resolveFoo') {
doFirst {
configurations.foo.resolve().forEach(f -> logger.warn("Resolved $f"))
}
}
outputs:
$ ./gradlew resolveFoo
> Task :resolveFoo
Locking configuration ':foo'
Locking configuration ':bar'
Resolved /Users/cdennis/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.25/da76ca59f6a57ee3102f8f9bd9cee742973efa8a/slf4j-api-1.7.25.jar
BUILD SUCCESSFUL in 542ms
1 actionable task: 1 executedLouis Jacomet
03/01/2022, 6:55 PMfoo and bar as not consumable?
I will need to confirm later, but we might be indeed locking down all consumable configurations because we need the metadata for the current project, which is at the root of the resolution graph.Louis Jacomet
03/01/2022, 6:56 PMChris
03/01/2022, 7:45 PMcanBeConsumed = false
stil locks both configurationsChris
03/01/2022, 7:47 PM