As current work-around I ended up with reeeally hacky and ugly:
// part of work-around for https://github.com/researchgate/gradle-release/issues/346
if (gradle.startParameter.isConfigurationCacheRequested) {
extensions.create<ReleaseExtension>("release", project, emptyMap<String, Any>())
tasks.registerMockTask<GradleBuild>("release")
tasks.registerMockTask<GradleBuild>("runBuildTasks")
tasks.registerMockTask<UpdateVersion>("updateVersion")
tasks.registerMockTask<Task>("afterReleaseBuild")
tasks.registerMockTask<PreTagCommit>("preTagCommit")
tasks.registerMockTask<CreateReleaseTag>("createReleaseTag")
tasks.registerMockTask<Task>("beforeReleaseBuild")
} else {
// part of work-around for https://github.com/gradle/gradle/issues/23747
// part of work-around for https://github.com/researchgate/gradle-release/issues/304
apply(plugin = "net.researchgate.release")
}
and
inline fun <reified T : Task> TaskContainer.registerMockTask(name: String) = register<T>(name) {
group = getRELEASE_GROUP()
// fail as soon as the task gets configured except while IntelliJ IDEA sync
if (!System.getProperty("idea.sync.active").toBoolean()) {
error("Please disable configuration cache to use release tasks")
}
}