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 = linkHomepage
			organization {
				name = 'SpringIO'
				url = 'https://spring.io'
			}
			licenses {
				license {
					name 'The Apache Software License, Version 2.0'
					url 'https://www.apache.org/licenses/LICENSE-2.0.txt'
					distribution 'repo'
				}
			}

			scm {
				url = linkScmUrl
				connection = 'scm:git:' + linkScmConnection
				developerConnection = 'scm:git:' + linkScmDevConnection
			}
			developers {
				developer {
					id = 'abilan'
					name = 'Artem Bilan'
					email = 'abilan@pivotal.io'
				}
			}
		}
	}
}
