Package io.github.joke.conventionalversion
A settings plugin rather than a project plugin because isolated projects forbids cross-project
model access, so a project plugin would have to read git once per project with nowhere to share the
answer. Settings.gradle.lifecycle.beforeProject is the sanctioned replacement for
allprojects and gives one calculation for any number of projects.
Unit tested and mutation tested like any other package. Being wiring does not put it out of reach: the action this package hands to Gradle is a named type, instantiated and invoked directly by its spec, so what it does to a project is asserted here rather than inferred from a real build.
Nothing in this project executes a Gradle build under test. Configuration cache and isolated
projects compatibility rest on construction and review: git is read through a ValueSource
so the cache re-evaluates it, and AssignVersion declares
everything it captures. Neither property is verified by execution - see that class for what that
has already cost once.
-
ClassDescriptionHow settings mode reaches every project: by applying
ProjectVersionPluginto each of them.Assigns one project the version of the package that claims it.How either mode reaches the calculated catalogue: the core's only entry point.Assigns projects the version of the release-please package that claims them.Raises every member of a linked group to the highest version any member calculated.Project mode, and the whole of both modes: settings mode is this plugin applied to every project.Settings mode: every project in the build is versioned, whether or not it takes part.Every package's version, and the answer for anything no package claims.One package and what it resolved to.The one calculated catalogue, shared by every project in the build.What the calculation concluded, readable from any project's build logic.Reads git and release-please's configuration, then calculates every package's version.