apply plugin: 'maven'

// Create a source jar for uploading
task sourceJar(type: Jar) {
    classifier = 'sources'
    from sourceSets.main.java
}

artifacts {
    archives sourceJar
}

// 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 }

gradle.taskGraph.whenReady {graph ->
    if (graph.hasTask(uploadArchives)) {
        // check properties defined and fail early
        s3AccessKey
        s3SecretAccessKey
    }
}

def deployer = null

uploadArchives {
    def releaseRepositoryUrl = "file://${project.properties.mavenSyncRepoDir}"
    def milestoneRepositoryUrl = 's3://maven.springframework.org/milestone'
    def snapshotRepositoryUrl = 's3://maven.springframework.org/snapshot'

    deployer = repositories.mavenDeployer {
        configuration = configurations.deployerJars
        if (releaseBuild) {
            // "mavenSyncRepoDir" should be set in properties
            repository(url: releaseRepositoryUrl)
        } else {
            s3credentials = [userName: project.properties.s3AccessKey, passphrase: project.properties.s3SecretAccessKey]
            repository(url: milestoneRepositoryUrl) {
                authentication(s3credentials)
            }
            snapshotRepository(url: snapshotRepositoryUrl) {
                authentication(s3credentials)
            }
        }
    }
}

// Pom Customization

installer = install.repositories.mavenInstaller

def optionalDeps = ['ehcache', 'log4j', 'apacheds-core', 'jsp-api', 'jsr250-api', 'ldapsdk']
def clogging = new org.apache.maven.model.Dependency()
clogging.artifactId = clogging.groupId = "commons-logging"
clogging.scope = 'compile'
clogging.optional = true
clogging.version = '1.1.1'

[installer, deployer]*.pom.collect { pom ->
    pom.scopeMappings.addMapping(10, configurations.provided, 'provided')
}

[installer, deployer]*.pom*.whenConfigured { pom ->
    // Remove test scope dependencies from published poms
    pom.dependencies = pom.dependencies.findAll {it.scope != 'test'}
    pom.dependencies.findAll { dep ->
        optionalDeps.contains(dep.artifactId) ||
        dep.groupId.startsWith('org.apache.directory') ||
        dep.groupId.startsWith('org.slf4j')
    }*.optional = true

    pom.dependencies.add(clogging)

    if (pom.artifactId == 'spring-security-config') {
        pom.dependencies.find { dep -> dep.artifactId == 'spring-security-web'}.optional = true
        pom.dependencies.find { dep -> dep.artifactId == 'spring-web'}.optional = true
    }
}
