summaryrefslogtreecommitdiff
path: root/android/java
diff options
context:
space:
mode:
authorBrad Leege <bleege@gmail.com>2015-02-09 18:49:44 -0800
committerBrad Leege <bleege@gmail.com>2015-02-09 18:49:44 -0800
commitf4239a2b5174f346d661c55bb642ce8af9ed58e7 (patch)
treefb81b61dd4d9c8d0c8f4854973adf8eeab6a8260 /android/java
parentc7d4f7d256b9a2320ea6dc76dba1605d1ed3999c (diff)
downloadqtlocation-mapboxgl-f4239a2b5174f346d661c55bb642ce8af9ed58e7.tar.gz
#826 - Initial setup of Maven Central publishing functionality
Diffstat (limited to 'android/java')
-rw-r--r--android/java/lib/build.gradle208
-rw-r--r--android/java/lib/gradle.properties22
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