apply plugin: 'maven' apply plugin: 'signing' apply from: "${rootDir}/gradle/dependencies.gradle" allprojects { group project.GROUP version project.VERSION_NAME repositories { mavenCentral() } } repositories { mavenCentral() } def isReleaseBuild() { return VERSION_NAME.contains("SNAPSHOT") == false } def isLocalBuild() { if (System.getenv('IS_LOCAL_DEVELOPMENT') != null) { return System.getenv('IS_LOCAL_DEVELOPMENT').toBoolean() } return true } 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 obtainMavenLocalUrl() { return getRepositories().mavenLocal().getUrl() } def getRepositoryUsername() { return hasProperty('USERNAME') ? USERNAME : (hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "") } def getRepositoryPassword() { return hasProperty('PASSWORD') ? PASSWORD : (hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "") } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.groupId = GROUP pom.artifactId = POM_ARTIFACT_ID pom.version = VERSION_NAME if (isLocalBuild()) { repository(url: obtainMavenLocalUrl()) } else { repository(url: getReleaseRepositoryUrl()) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } snapshotRepository(url: getSnapshotRepositoryUrl()) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } } 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_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } def vendorMap = getVendorMap() pom.whenConfigured { pom -> println("Current dependencies ${pom.dependencies}") pom.dependencies.each { dep -> println("Processing vendor ${dep}") if (dep.getGroupId() == rootProject.name) { Vendor vendor = vendorMap.get(dep.getArtifactId()) dep.setGroupId(project.GROUP) dep.setArtifactId(vendor.artifactName) dep.setVersion(vendor.artifactVersion) println("Updated vendor ${dep}") } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.sourceFiles classpath = files(android.bootClasspath) } task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { classifier = 'javadoc' from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } tasks.withType(Javadoc) { options.addStringOption('encoding', 'UTF-8') options.addStringOption('docencoding', 'UTF-8') options.addStringOption('charset', 'UTF-8') } artifacts { archives androidSourcesJar archives androidJavadocsJar } } // See: https://github.com/chrisbanes/gradle-mvn-push/issues/43#issuecomment-84140513 afterEvaluate { project -> android.libraryVariants.all { variant -> tasks.androidJavadocs.doFirst { classpath += files(variant.javaCompile.classpath.files) } } } // this class holds values that will be included in the resulting pom file for vendorized libraries class Vendor { private final artifactName private final artifactVersion Vendor(artifactName, artifactVersion) { this.artifactName = artifactName this.artifactVersion = artifactVersion } def getArtifactName() { return artifactName } def getArtifactVersion() { return artifactVersion } } HashMap getVendorMap() { def map = new HashMap() map.put("mapbox-android-gestures", new Vendor(vendorArtifacts.mapboxGestures, vendorVersions.mapboxGestures)) map.put("services-core", new Vendor(vendorArtifacts.mapboxJavaCore, vendorVersions.mapboxJava)) map.put("services-turf", new Vendor(vendorArtifacts.mapboxJavaTurf, vendorVersions.mapboxJava)) map.put("services-geojson", new Vendor(vendorArtifacts.mapboxJavaGeojson, vendorVersions.mapboxJava)) map.put("libcore", new Vendor(vendorArtifacts.mapboxAndroidCore, vendorVersions.mapboxAndroidCore)) map.put("libtelemetry", new Vendor(vendorArtifacts.mapboxTelemetry, vendorVersions.mapboxTelemetry)) return map }