apply plugin: 'maven' ext.optionalDeps = [] ext.providedDeps = [] ext.optional = { optionalDeps << it } ext.provided = { providedDeps << it } install { repositories.mavenInstaller { customizePom(pom, project) } } def customizePom(pom, gradleProject) { pom.whenConfigured { generatedPom -> // respect 'optional' and 'provided' dependencies gradleProject.optionalDeps.each { dep -> generatedPom.dependencies.find { it.artifactId == dep.name }?.optional = true } gradleProject.providedDeps.each { dep -> generatedPom.dependencies.find { it.artifactId == dep.name }?.scope = 'provided' } // eliminate test-scoped dependencies (no need in maven central poms) generatedPom.dependencies.removeAll { dep -> dep.scope == 'test' } // add all items necessary for maven central publication generatedPom.project { name = gradleProject.description description = gradleProject.description url = 'http://github.com/SpringSource/spring-gemfire' organization { name = 'SpringSource' url = 'http://www.springsource.org/spring-gemfire' } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } scm { url = 'http://github.com/SpringSource/spring-gemfire' connection = 'scm:git:git://github.com/SpringSource/spring-gemfire' developerConnection = 'scm:git:git://github.com/SpringSource/spring-gemfire' } developers { developer { id = 'costin' name = 'Costin Leau' email = 'cleau@vmware.com' } developer { id = 'dturanski' name = 'David Turanski' email = 'dturanski@gopivotal.com' } developer { id = 'jblum' name = 'John Blum' email = 'jblum@gopivotal.com' } developer { id = 'ogierke' name = 'Oliver Gierke' email = 'ogierke@gopivotal.com' } developer { id = 'ladams' name = 'Lyndon Adams' email = 'ladams@gopivotal.com' } } } } }