Kapt: Support Java 9 in Gradle plugin infrastructure

This commit is contained in:
Yan Zhulanow
2017-10-17 22:21:42 +03:00
parent c6eab6f72e
commit 3d155dd757
3 changed files with 11 additions and 3 deletions
@@ -27,7 +27,6 @@ import org.gradle.api.Project
import org.gradle.api.UnknownDomainObjectException import org.gradle.api.UnknownDomainObjectException
import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.api.tasks.compile.AbstractCompile
import com.intellij.openapi.util.text.StringUtil.*
import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper import org.jetbrains.kotlin.gradle.plugin.android.AndroidGradleWrapper
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
@@ -11,6 +11,7 @@ import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment import org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment
import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner import org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
import org.jetbrains.kotlin.gradle.plugin.compareVersionNumbers
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import java.io.File import java.io.File
@@ -64,7 +65,7 @@ open class KaptTask : ConventionTask() {
val messageCollector = GradleMessageCollector(logger) val messageCollector = GradleMessageCollector(logger)
val outputItemCollector = OutputItemsCollectorImpl() val outputItemCollector = OutputItemsCollectorImpl()
val environment = GradleCompilerEnvironment(kotlinCompileTask.computedCompilerClasspath, messageCollector, outputItemCollector, args) val environment = GradleCompilerEnvironment(kotlinCompileTask.computedCompilerClasspath, messageCollector, outputItemCollector, args)
if (environment.toolsJar == null) { if (environment.toolsJar == null && !isAtLeastJava9) {
throw GradleException("Could not find tools.jar in system classpath, which is required for kapt to work") throw GradleException("Could not find tools.jar in system classpath, which is required for kapt to work")
} }
@@ -82,4 +83,12 @@ open class KaptTask : ConventionTask() {
deleteRecursively() deleteRecursively()
mkdirs() mkdirs()
} }
private val isAtLeastJava9: Boolean
get() = compareVersionNumbers(getJavaRuntimeVersion(), "9") >= 0
private fun getJavaRuntimeVersion(): String {
val rtVersion = System.getProperty("java.runtime.version")
return if (Character.isDigit(rtVersion[0])) rtVersion else System.getProperty("java.version")
}
} }
@@ -876,7 +876,7 @@ internal fun loadAndroidPluginVersion(): String? {
} }
//Copied from StringUtil.compareVersionNumbers //Copied from StringUtil.compareVersionNumbers
private fun compareVersionNumbers(v1: String?, v2: String?): Int { internal fun compareVersionNumbers(v1: String?, v2: String?): Int {
if (v1 == null && v2 == null) { if (v1 == null && v2 == null) {
return 0 return 0
} }