task checkDependencies << {
    verifyNoDependenciesMatchingVersion(".*-SNAPSHOT")
    if(releaseBuild) {
        verifyNoDependenciesMatchingVersion(".*M.*")
        verifyNoDependenciesMatchingVersion(".*RC.*")
    }
}

if(!snapshotBuild) {
    tasks.findByPath('check')?.dependsOn checkDependencies
}

def verifyNoDependenciesMatchingVersion(def pattern) {
    def dependencies = configurations.all*.allDependencies*.findAll { d -> d.version?.matches(pattern) }.flatten().toSet().join("\n    ")
    if(dependencies) {
        throw new GradleException("${project.name} cannot have dependencies with a version that matches $pattern when its version is ${project.version}. Got\n    $dependencies")
    }
}