// Maven side of things subprojects { apply plugin: 'maven' // Java plugin has to have been already applied for the conf2scope mappings to work apply plugin: 'signing' signing { required { gradle.taskGraph.hasTask(uploadMavenCentral) } sign configurations.archives } /** * Publishing to Maven Central example provided from http://jedicoder.blogspot.com/2011/11/automated-gradle-project-deployment-to.html * artifactory will execute uploadArchives to force generation of ivy.xml, and we don't want that to trigger an upload to maven * central, so using custom upload task. */ task uploadMavenCentral(type:Upload, dependsOn: signArchives) { configuration = configurations.archives onlyIf { ['release', 'snapshot'].contains(project.status) } repositories.mavenDeployer { beforeDeployment { signing.signPom(it) } // To test deployment locally, use the following instead of oss.sonatype.org //repository(url: "file://localhost/${rootProject.rootDir}/repo") def sonatypeUsername = rootProject.hasProperty('sonatypeUsername')?rootProject.sonatypeUsername:'' def sonatypePassword = rootProject.hasProperty('sonatypePassword')?rootProject.sonatypePassword:'' repository(url: 'https://oss.sonatype.org/service/local/staging/deploy/maven2') { authentication(userName: sonatypeUsername, password: sonatypePassword) } snapshotRepository(url: 'https://oss.sonatype.org/content/repositories/snapshots/') { authentication(userName: sonatypeUsername, password: sonatypePassword) } // Prevent datastamp from being appending to artifacts during deployment uniqueVersion = false // Closure to configure all the POM with extra info, common to all projects pom.project { name "${project.name}" description "${project.name} developed by Netflix" developers { developer { id 'netflixgithub' name 'Netflix Open Source Development' email 'talent@netflix.com' } } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } url "https://github.com/Netflix/${rootProject.githubProjectName}" scm { connection "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git" url "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git" developerConnection "scm:git:git@github.com:Netflix/${rootProject.githubProjectName}.git" } issueManagement { system 'github' url "https://github.com/Netflix/${rootProject.githubProjectName}/issues" } } } } }