buildSrc/src/main/kotlin/AndroidJavaVersion.kt
changeset 1 831cffa9c991
child 7 b83e6b69e806
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildSrc/src/main/kotlin/AndroidJavaVersion.kt	Fri May 08 21:33:19 2020 -0400
@@ -0,0 +1,48 @@
+package com.geekorum.build
+
+import com.android.build.gradle.BaseExtension
+import org.gradle.api.JavaVersion
+import org.gradle.api.Project
+import org.gradle.api.plugins.ExtensionAware
+import org.gradle.kotlin.dsl.dependencies
+import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
+
+/**
+ * Configure java version compile options based on minSdkVersion value
+ */
+fun BaseExtension.configureJavaVersion() {
+    val api = defaultConfig.minSdkVersion?.apiLevel ?: 0
+    val version = when {
+        api >= 24 -> JavaVersion.VERSION_1_8
+        api >= 19 -> JavaVersion.VERSION_1_7
+        else -> JavaVersion.VERSION_1_6
+    }
+    compileOptions {
+        sourceCompatibility = version
+        targetCompatibility = version
+    }
+
+    (this as ExtensionAware).extensions.findByType(KotlinJvmOptions::class.java)?.apply {
+        if (version >= JavaVersion.VERSION_1_8) {
+            jvmTarget = "1.8"
+        }
+    }
+}
+
+/**
+ * Add missing annotation processord dependencies to build on Java 11
+ */
+fun Project.configureAnnotationProcessorDeps() {
+    dependencies {
+        configurations.whenObjectAdded {
+            when (name) {
+                "kapt" -> {
+                    add(name,"javax.xml.bind:jaxb-api:2.3.1")
+                    add(name, "com.sun.xml.bind:jaxb-core:2.3.0.1")
+                    add(name, "com.sun.xml.bind:jaxb-impl:2.3.2")
+                }
+                "annotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1")
+            }
+        }
+    }
+}