apply plugin: 'maven' // Create a source jar for uploading task sourceJar(type: Jar) { classifier = 'sources' from sourceSets.main.java.srcDirs include '**/*.java', '**/*.aj' } artifacts { archives sourceJar archives javadocJar } // Configuration for SpringSource s3 maven deployer configurations { deployerJars } dependencies { deployerJars "org.springframework.build.aws:org.springframework.build.aws.maven:3.0.0.RELEASE" } // Remove the archive configuration from the runtime configuration, so that anything added to archives // (such as the source jar) is no longer included in the runtime classpath configurations.default.extendsFrom = [configurations.runtime] as Set // Add the main jar into the default configuration artifacts { 'default' jar } install { customizePom(repositories.mavenInstaller.pom, project) } def customizePom(pom, gradleProject) { def optionalDeps = ['ehcache', 'log4j', 'apacheds-core', 'jsp-api', 'jsr250-api', 'ldapsdk', 'aspectjrt', 'aspectjweaver'] pom.scopeMappings.addMapping(10, configurations.provided, 'provided') pom.whenConfigured { p -> // Remove test scope dependencies from published poms p.dependencies = p.dependencies.findAll {it.scope != 'test'} // Flag optional deps p.dependencies.findAll { dep -> optionalDeps.contains(dep.artifactId) || dep.groupId.startsWith('org.apache.directory') || dep.groupId.startsWith('org.slf4j') }*.optional = true // Hack for specific case of config module if (p.artifactId == 'spring-security-config') { p.dependencies.find { dep -> dep.artifactId == 'spring-security-ldap'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-ldap-core'}.optional = true p.dependencies.find { dep -> dep.groupId.startsWith "org.apache.directory" }*.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-security-web'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-security-openid'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'guice'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'openid4java-nodeps'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-jdbc'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-tx'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-web'}.optional = true } if (p.artifactId == 'spring-security-core') { p.dependencies.find { dep -> dep.artifactId == 'spring-jdbc'}.optional = true p.dependencies.find { dep -> dep.artifactId == 'spring-tx'}.optional = true p.dependencies.removeAll { dep -> dep.artifactId == 'spring-security-crypto' } } } pom.project { name = gradleProject.name description = gradleProject.name url = 'http://springsource.org/spring-security' organization { name = 'SpringSource' url = 'http://springsource.org/' } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } scm { url = 'https://github.com/SpringSource/spring-security' connection = 'scm:git:git://github.com/SpringSource/spring-security' developerConnection = 'scm:git:git://github.com/SpringSource/spring-security' } developers { developer { id = 'rwinch' name = 'Rob Winch' email = 'rwinch@vmware.com' } } repositories { repository { id 'spring-milestone' url 'http://repo.springsource.org/libs-milestone' } } dependencies { dependency { artifactId = groupId = 'commons-logging' scope = 'compile' optional = 'true' version = '1.1.1' } } } } task generatePom { group = 'Build' description = 'Generates the Maven pom.xml' ext.generatedPomFileName = 'pom.xml' inputs.files('**/*.gradle') outputs.files(generatedPomFileName) doLast() { def p = pom {} customizePom(p, project) p.writeTo(generatedPomFileName) } }