diff options
author | Brad Leege <bleege@gmail.com> | 2015-02-09 18:49:44 -0800 |
---|---|---|
committer | Brad Leege <bleege@gmail.com> | 2015-02-09 18:49:44 -0800 |
commit | f4239a2b5174f346d661c55bb642ce8af9ed58e7 (patch) | |
tree | fb81b61dd4d9c8d0c8f4854973adf8eeab6a8260 /android/java | |
parent | c7d4f7d256b9a2320ea6dc76dba1605d1ed3999c (diff) | |
download | qtlocation-mapboxgl-f4239a2b5174f346d661c55bb642ce8af9ed58e7.tar.gz |
#826 - Initial setup of Maven Central publishing functionality
Diffstat (limited to 'android/java')
-rw-r--r-- | android/java/lib/build.gradle | 208 | ||||
-rw-r--r-- | android/java/lib/gradle.properties | 22 |
2 files changed, 224 insertions, 6 deletions
diff --git a/android/java/lib/build.gradle b/android/java/lib/build.gradle index 7d30b5ff36..8f079159d6 100644 --- a/android/java/lib/build.gradle +++ b/android/java/lib/build.gradle @@ -8,8 +8,38 @@ buildscript { } apply plugin: 'com.android.library' +apply plugin: 'checkstyle' +apply plugin: 'maven' +apply plugin: 'signing' + +allprojects { + group project.GROUP + version project.VERSION_NAME + + repositories { + mavenCentral() + } +} + +repositories { + mavenCentral() +} + +dependencies { + compile 'commons-validator:commons-validator:1.4.1' + compile 'com.android.support:support-annotations:21.0.3' + compile 'com.android.support:support-v4:21.0.3' +} android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_MIN_SDK) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + } + compileSdkVersion 21 buildToolsVersion "21.1.2" @@ -20,8 +50,6 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 4 - versionName "0.1.3" } compileOptions { @@ -51,8 +79,176 @@ configurations { all*.exclude group: 'commons-collections', module: 'commons-collections' } -dependencies { - compile 'commons-validator:commons-validator:1.4.1' - compile 'com.android.support:support-annotations:21.0.3' - compile 'com.android.support:support-v4:21.0.3' + +android.libraryVariants.all { variant -> + def name = variant.name + task "javadoc$name"(type: Javadoc) { + description = "Generates javadoc for build $name" + failOnError = false + destinationDir = new File(destinationDir, variant.baseName) + source = files(variant.javaCompile.source) + ext.androidJar = "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar" + classpath = files(variant.javaCompile.classpath.files) + files(ext.androidJar) + options.links("http://docs.oracle.com/javase/7/docs/api/") + options.links("http://d.android.com/reference/") + exclude '**/R.html', '**/R.*.html' + } +} + +checkstyle { + configFile project.file('../checks.xml') + showViolations true +} + +android.libraryVariants.all { variant -> + def name = variant.buildType.name + def checkstyle = project.tasks.create "checkstyle${name.capitalize()}", Checkstyle + checkstyle.dependsOn variant.javaCompile + checkstyle.source variant.javaCompile.source + checkstyle.classpath = project.fileTree(variant.javaCompile.destinationDir) + checkstyle.exclude('**/BuildConfig.java') + checkstyle.exclude('**/R.java') + checkstyle.exclude('**/uk/co/senab/bitmapcache/*') + checkstyle.exclude('**/com/cocoahero/android/geojson/**') + project.tasks.getByName("check").dependsOn checkstyle +} + +// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/jar.gradle +android.libraryVariants.all { variant -> + def jarTask = project.tasks.create(name: "jar${variant.name.capitalize()}", type: Jar) { + from variant.javaCompile.destinationDir + exclude "**/R.class" + exclude "**/BuildConfig.class" + } + jarTask.dependsOn variant.javaCompile + artifacts.add('archives', jarTask); +} + +// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/gradle-mvn-push.gradle +def isReleaseBuild() { + return VERSION_NAME.contains("SNAPSHOT") == false +} + +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('USERNAME') ? USERNAME : + (hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "") +} + +def getRepositoryPassword() { + return hasProperty('PASSWORD') ? PASSWORD : + (hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "") +} + + +task apklib(type: Zip) { + appendix = extension = 'apklib' + + from 'AndroidManifest.xml' + into('res') { + from 'res' + } + into('src') { + from 'src' + } +} + +artifacts { + archives apklib +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), + password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), + password: getRepositoryPassword()) + } + +/* + // Leaving out as artifact was incorrectly named when found + addFilter('aar') { artifact, file -> + artifact.name == archivesBaseName + } + addFilter('apklib') { artifact, file -> + artifact.name == archivesBaseName + '-apklib' + } +*/ + + 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 + } + } + } + } + } + } + + signing { + required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives + } + + task androidJavadocs(type: Javadoc) { + failOnError false + source = android.sourceSets.main.java.sourceFiles + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + } + + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.sourceFiles + } + + artifacts { + archives androidSourcesJar + archives androidJavadocsJar + } } diff --git a/android/java/lib/gradle.properties b/android/java/lib/gradle.properties new file mode 100644 index 0000000000..ba69bd9e47 --- /dev/null +++ b/android/java/lib/gradle.properties @@ -0,0 +1,22 @@ +GROUP=com.mapbox.mapboxgl +VERSION_NAME=0.0.1-SNAPSHOT + +POM_DESCRIPTION=Mapbox GL Android SDK +POM_URL=https://github.com/mapbox/mapbox-gl-native +POM_SCM_URL=https://github.com/mapbox/mapbox-gl-native +POM_SCM_CONNECTION=scm:git@github.com:mapbox/mapbox-gl-native.git +POM_SCM_DEV_CONNECTION=scm:git@github.com:mapbox/mapbox-gl-native.git +POM_LICENCE_NAME=The Apache Software License, Version 2.0 +POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=mapbox +POM_DEVELOPER_NAME=Mapbox + +ANDROID_MIN_SDK=14 +ANDROID_BUILD_TARGET_SDK_VERSION=21 +ANDROID_BUILD_TOOLS_VERSION=21.1.2 +ANDROID_BUILD_SDK_VERSION=21 + +POM_NAME=Mapbox GL Android SDK +POM_ARTIFACT_ID=mapbox-gl-android-sdk +POM_PACKAGING=aar |