apply plugin: 'release' // Ignore release plugin's task because it calls out via GradleBuild. This is a good place to put an email to send out task release(overwrite: true, dependsOn: commitNewVersion) << { // This is a good place to put an email to send out } commitNewVersion.dependsOn updateVersion updateVersion.dependsOn createReleaseTag createReleaseTag.dependsOn preTagCommit def buildTasks = tasks.matching { it.name =~ /:build/ } preTagCommit.dependsOn buildTasks preTagCommit.dependsOn checkSnapshotDependencies //checkSnapshotDependencies.dependsOn confirmReleaseVersion // Introduced in 1.0, forces readLine //confirmReleaseVersion.dependsOn unSnapshotVersion checkSnapshotDependencies.dependsOn unSnapshotVersion // Remove once above is fixed unSnapshotVersion.dependsOn checkUpdateNeeded checkUpdateNeeded.dependsOn checkCommitNeeded checkCommitNeeded.dependsOn initScmPlugin // Call out to compile against internal repository task uploadArtifactory(type: GradleBuild) { startParameter = project.gradle.startParameter.newInstance() startParameter.addInitScript( file('gradle/netflix-oss.gradle') ) startParameter.getExcludedTaskNames().add('check') tasks = [ 'build', 'artifactoryPublish' ] } task releaseArtifactory(dependsOn: [checkSnapshotDependencies, uploadArtifactory]) task buildWithArtifactory(type: GradleBuild) { startParameter = project.gradle.startParameter.newInstance() startParameter.addInitScript( file('gradle/netflix-oss.gradle') ) startParameter.getExcludedTaskNames().add('check') tasks = [ 'build' ] } // Ensure upload happens before taggging but after all pre-checks releaseArtifactory.dependsOn checkSnapshotDependencies createReleaseTag.dependsOn releaseArtifactory gradle.taskGraph.whenReady { taskGraph -> if ( taskGraph.hasTask(uploadArtifactory) && rootProject.status == 'release' && !taskGraph.hasTask(':release') ) { throw new GradleException('"release" task has to be run before uploading a release to Artifactory') } } subprojects.each { project -> project.uploadMavenCentral.dependsOn rootProject.checkSnapshotDependencies rootProject.createReleaseTag.dependsOn project.uploadMavenCentral gradle.taskGraph.whenReady { taskGraph -> if ( taskGraph.hasTask(project.uploadMavenCentral) && !taskGraph.hasTask(':release') ) { throw new GradleException('"release" task has to be run before uploading to Maven Central') } } } // Prevent plugin from asking for a version number interactively ext.'gradle.release.useAutomaticVersion' = "true" release { // http://tellurianring.com/wiki/gradle/release failOnCommitNeeded=true failOnPublishNeeded=true failOnUnversionedFiles=true failOnUpdateNeeded=true includeProjectNameInTag=true requireBranch = null }