diff --git a/build.gradle b/build.gradle index a8530a704e..903d7247fc 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,8 @@ allprojects { repositories { maven { url "http://repo.springsource.org/libs-snapshot" } } + + } // Set up different subproject lists for individual configuration @@ -26,6 +28,7 @@ configure(subprojects - coreModuleProjects) { configure(javaProjects) { apply from: "$rootDir/gradle/javaprojects.gradle" + apply from: "$rootDir/gradle/release-checks.gradle" } configure(coreModuleProjects) { diff --git a/gradle/release-checks.gradle b/gradle/release-checks.gradle new file mode 100644 index 0000000000..5fd7c448ef --- /dev/null +++ b/gradle/release-checks.gradle @@ -0,0 +1,32 @@ +task checkDependencies << { + verifyNoDependenciesMatchingVersion(".*-SNAPSHOT") + if(releaseBuild) { + verifyNoDependenciesMatchingVersion(".*M.*") + verifyNoDependenciesMatchingVersion(".*RC.*") + } +} + +task checkRepositories << { + verifyNoRepositoriesMatching(".*snapshot.*") + if(releaseBuild) { + verifyNoRepositoriesMatching(".*milestone.*") + } +} + +if(!snapshotBuild) { + tasks.findByPath('check')?.dependsOn checkRepositories, 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") + } +} + +def verifyNoRepositoriesMatching(def pattern) { + def matchingRepositories = repositories.findAll { r -> r.url?.toString()?.matches(pattern) }.flatten().collect { it.url }.toSet().join("\n ") + if(matchingRepositories) { + throw new GradleException("${project.name} cannot have repositories with a version that matches $pattern when its version is ${project.version}. Got\n $matchingRepositories") + } +} \ No newline at end of file