// buildSrc/src/main/kotlin/CustomProjectVersion.kt abstract class CustomProjectVersion { abstract val base: Property abstract val qualifier: Property override fun toString(): String = "${base.get()}${qualifier.get()}" } // buildSrc/src/main/kotlin/version-manager.gradle.kts val customProjectVersion = extensions.create("customProjectVersion", CustomProjectVersion::class) customProjectVersion.base.convention(provider { rootProject.version.toString() }) customProjectVersion.qualifier.convention("") version = customProjectVersion // my-subproject/build.gradle.kts plugins { `version-manager` } // override the default customProjectVersion.qualifier = "-custom"