apply plugin: 'signing' version = VERSION_NAME group = MAVEN_GROUP def isReleaseBuild() { return !VERSION_NAME.contains('SNAPSHOT') } def getReleaseRepositoryUrl() { return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" } def getSnapshotRepositoryUrl() { return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : "https://oss.sonatype.org/content/repositories/snapshots/" } def getRepositoryUsername() { return hasProperty('SONATYPE_NEXUS_USERNAME') ? SONATYPE_NEXUS_USERNAME : "" } def getRepositoryPassword() { return hasProperty('SONATYPE_NEXUS_PASSWORD') ? SONATYPE_NEXUS_PASSWORD : "" } def getHttpProxyHost() { return project.properties['systemProp.http.proxyHost'] } def getHttpProxyPort() { return project.properties['systemProp.http.proxyPort'] } def needProxy() { return (getHttpProxyHost() != null) && (getHttpProxyPort() != null) } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.groupId = MAVEN_GROUP pom.artifactId = POM_ARTIFACT_ID pom.version = VERSION_NAME repository(url: getReleaseRepositoryUrl()) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) if (needProxy()) { proxy(host: getHttpProxyHost(), port: getHttpProxyPort() as Integer, type: 'http') } } snapshotRepository(url: getSnapshotRepositoryUrl()) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) if (needProxy()) { proxy(host: getHttpProxyHost(), port: getHttpProxyPort() as Integer, type: 'http') } } pom.project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENSE_NAME url POM_LICENSE_URL distribution POM_LICENSE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask('uploadArchives') } sign configurations.archives } }