We are enabling experimental features via system properties which are set in gradle.properties Those properties are read in different places. One of them is in init script. However, when IntelliJ is importing gradle project it is setting properties from gradle.properties too late and init script is already executed. Example project showing this case https://github.com/nebula-plugins/gradle-nebula-integration/tree/master/broken-intellij-import-with-native-lock
How to reproduce
- Assuming that you are in project directory
cp init.gradle ~/.gradle/init.d/
./gradlew dependencies --write-locks
idea . (assuming that you have IntelliJ command line launcher)
- Click
OK to finish import.
Project import fails with:
Caused by: org.gradle.api.artifacts.ResolveException: Could not resolve all dependencies for configuration ':resolutionRulesCopy'.
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.wrapException(ErrorHandlingConfigurationResolver.java:103)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph(ErrorHandlingConfigurationResolver.java:75)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$5.run(DefaultConfiguration.java:533)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveGraphIfRequired(DefaultConfiguration.java:524)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolveToStateOrLater(DefaultConfiguration.java:509)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1800(DefaultConfiguration.java:123)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getSelectedArtifacts(DefaultConfiguration.java:1037)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.getFiles(DefaultConfiguration.java:1025)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.getFiles(DefaultConfiguration.java:444)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration_Decorated.getFiles(Unknown Source)
at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.resolve(DefaultConfiguration.java:434)
at nebula.plugin.resolutionrules.CopiedConfiguration.resolve(configurations.kt)
at nebula.plugin.resolutionrules.NebulaResolutionRulesExtension$ruleFiles$2.invoke(plugin.kt:172)
at nebula.plugin.resolutionrules.NebulaResolutionRulesExtension$ruleFiles$2.invoke(plugin.kt:164)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at nebula.plugin.resolutionrules.NebulaResolutionRulesExtension.getRuleFiles(plugin.kt)
at nebula.plugin.resolutionrules.NebulaResolutionRulesExtension.ruleFiles(plugin.kt:178)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin.rulesFromConfiguration(plugin.kt:105)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin.access$rulesFromConfiguration(plugin.kt:36)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin$ruleSet$2.invoke(plugin.kt:39)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin$ruleSet$2.invoke(plugin.kt:36)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin.getRuleSet(plugin.kt)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin.access$getRuleSet$p(plugin.kt:36)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin$apply$1$$special$$inlined$onExecute$1.execute(projects.kt:19)
at nebula.plugin.resolutionrules.ResolutionRulesPlugin$apply$1$$special$$inlined$onExecute$1.execute(projects.kt)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:155)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:91)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:80)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:42)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:230)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:149)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:58)
... 105 more
Caused by: org.gradle.internal.locking.LockOutOfDateException: Dependency lock state for configuration 'resolutionRules' is out of date: Resolved 'io.spring.platform:platform-bom:1.0.1.RELEASE' which is not part of the lock state
at org.gradle.internal.locking.LockOutOfDateException.createLockOutOfDateException(LockOutOfDateException.java:37)
at org.gradle.internal.locking.DependencyLockingArtifactVisitor.throwLockOutOfDateException(DependencyLockingArtifactVisitor.java:153)
at org.gradle.internal.locking.DependencyLockingArtifactVisitor.complete(DependencyLockingArtifactVisitor.java:159)
at org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyArtifactsVisitor.complete(CompositeDependencyArtifactsVisitor.java:73)
at org.gradle.api.internal.artifacts.ivyservice.DefaultConfigurationResolver.resolveGraph(DefaultConfigurationResolver.java:178)
at org.gradle.api.internal.artifacts.ivyservice.ShortCircuitEmptyConfigurationResolver.resolveGraph(ShortCircuitEmptyConfigurationResolver.java:89)
at org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingConfigurationResolver.resolveGraph(ErrorHandlingConfigurationResolver.java:73)
... 148 more
Looking at IntelliJ IDEA import process logging shows that flag for coreBomSupport is false hence it didn't exclude resolutionRules from recommending and so recommender adds bom into it. Because lock was generated from command line where it was excluded it causes missmatch.
Flag read in init script false //read from system property nebula.features.coreBomSupport
> Configure project :
coreBomSupport feature enabled //read from system property nebula.features.coreBomSupport
example-project: coreAlignmentSupport feature enabled
We are enabling experimental features via system properties which are set in
gradle.propertiesThose properties are read in different places. One of them is in init script. However, when IntelliJ is importing gradle project it is setting properties fromgradle.propertiestoo late and init script is already executed. Example project showing this case https://github.com/nebula-plugins/gradle-nebula-integration/tree/master/broken-intellij-import-with-native-lockHow to reproduce
cp init.gradle ~/.gradle/init.d/./gradlew dependencies --write-locksidea .(assuming that you have IntelliJ command line launcher)OKto finish import.Project import fails with:
Looking at IntelliJ IDEA import process logging shows that flag for coreBomSupport is false hence it didn't exclude
resolutionRulesfrom recommending and so recommender adds bom into it. Because lock was generated from command line where it was excluded it causes missmatch.