I think the answer to the first 2 questions is no because Configuration is a phase. Until that phase completes it doesn’t move to execution.
And the way we do version is, every IDE project has a gradle.properties and we put a property (local_version) there to specify version. Then the version is availble in the build script as a property. You can set version = project.property(“local_version”).
But we also have our own custom Version class to enforce a sematic versioning scheme. That’s something that Gradle should add. Gradle’s version is just a string.