diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/com/android/build/gradle/api/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/com/android/build/gradle/api/annotations.xml
index 52bd261a149..500ef07cd98 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/com/android/build/gradle/api/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/com/android/build/gradle/api/annotations.xml
@@ -6,12 +6,24 @@
-
+ -
+
+
-
-
+ -
+
+
+ -
+
+
+ -
+
+
-
diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
index d7fbf5637ce..a1a14699122 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/annotations.xml
@@ -8,6 +8,9 @@
+ -
+
+
-
diff --git a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/file/annotations.xml b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/file/annotations.xml
index dea5cec6774..86cc0e5f0c1 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/file/annotations.xml
+++ b/libraries/tools/kotlin-gradle-plugin-core/kotlinAnnotation/org/gradle/api/file/annotations.xml
@@ -2,4 +2,7 @@
-
+ -
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
index efda0897cbe..e0ab2938193 100644
--- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt
@@ -162,16 +162,12 @@ open class KotlinAndroidPlugin: Plugin {
private fun processVariants(variants: DefaultDomainObjectSet, project: Project, androidExt: BaseExtension): Unit {
val logger = project.getLogger()
- logger.debug("Kotlin plugin processing variants")
- val kotlinOptions = (androidExt as ExtensionAware).getExtensions().getByName("kotlinOptions") as K2JVMCompilerArguments
+ val kotlinOptions = getExtention(androidExt, "kotlinOptions")
val sourceSets = androidExt.getSourceSets()
val mainSourceSet = sourceSets.getByName(BuilderConstants.MAIN)
val testSourceSet = sourceSets.getByName(BuilderConstants.INSTRUMENT_TEST)
- logger.debug("Loaded ${BuilderConstants.MAIN} and ${BuilderConstants.INSTRUMENT_TEST} source sets")
for (variant in variants) {
- logger.debug("Processing variant [${variant}]")
-
if (variant is LibraryVariant || variant is ApkVariant) {
val buildType: BuildType = if (variant is LibraryVariant) {
variant.getBuildType()
@@ -202,25 +198,23 @@ open class KotlinAndroidPlugin: Plugin {
val javaSourceList = ArrayList()
if (variant is TestVariant) {
- javaSourceList.addAll(testSourceSet.getJava()!!.getSrcDirs()!!)
- val testKotlinSource = (testSourceSet as ExtensionAware).getExtensions().getByName("kotlin") as KotlinSourceSet
- logger.debug("Attaching ${testKotlinSource.getKotlin().getSrcDirs()} to variant ${variantName}")
+ javaSourceList.addAll(testSourceSet.getJava().getSrcDirs())
+ val testKotlinSource = getExtention(testSourceSet, "kotlin")
kotlinTask.source(testKotlinSource.getKotlin())
} else {
- javaSourceList.addAll(mainSourceSet.getJava()!!.getSrcDirs()!!)
- val mainKotlinSource = (mainSourceSet as ExtensionAware).getExtensions().getByName("kotlin") as KotlinSourceSet
- logger.debug("Attaching ${mainKotlinSource.getKotlin().getSrcDirs()} to variant ${variantName}")
+ javaSourceList.addAll(mainSourceSet.getJava().getSrcDirs())
+ val mainKotlinSource = getExtention(mainSourceSet, "kotlin")
kotlinTask.source(mainKotlinSource.getKotlin())
}
if (null != buildTypeSourceSet) {
- javaSourceList.add(buildTypeSourceSet.getJava()!!.getSrcDirs()!!)
- kotlinTask.source(((buildTypeSourceSet as ExtensionAware).getExtensions().getByName("kotlin") as KotlinSourceSet).getKotlin())
+ javaSourceList.add(buildTypeSourceSet.getJava().getSrcDirs())
+ kotlinTask.source(getExtention(buildTypeSourceSet, "kotlin").getKotlin())
}
- javaSourceList.add(callable{ variant.getProcessResources()!!.getSourceOutputDir()!! })
- javaSourceList.add(callable{ variant.getGenerateBuildConfig()!!.getSourceOutputDir()!! })
- javaSourceList.add(callable{ variant.getAidlCompile()!!.getSourceOutputDir()!! })
- javaSourceList.add(callable{ variant.getRenderscriptCompile()!!.getSourceOutputDir()!! })
+ javaSourceList.add(callable{ variant.getProcessResources().getSourceOutputDir() })
+ javaSourceList.add(callable{ variant.getGenerateBuildConfig()?.getSourceOutputDir() })
+ javaSourceList.add(callable{ variant.getAidlCompile().getSourceOutputDir() })
+ javaSourceList.add(callable{ variant.getRenderscriptCompile().getSourceOutputDir() })
if (variant is ApkVariant) {
for (flavour in variant.getProductFlavors().iterator()) {
@@ -233,24 +227,16 @@ open class KotlinAndroidPlugin: Plugin {
}
}
- logger.debug("Kotlin Source list for [${variantName}]")
- kotlinTask.getSource().forEach { f -> logger.debug(f.getPath()) }
- logger.debug("Kotlin Source list end")
-
- val basePlugin : BasePlugin = project.getPlugins().getPlugin("android") as BasePlugin
-
kotlinTask.doFirst({ task ->
+ var plugin = project.getPlugins().getPlugin("android")
+ if (null == plugin) {
+ plugin = project.getPlugins().getPlugin("android-library")
+ }
+ val basePlugin : BasePlugin = plugin as BasePlugin
val javaSources = project.files(javaSourceList)
- logger.debug("Java Source list for [${variantName}]")
- javaSources?.forEach { f -> logger.debug(f.getPath()) }
- logger.debug("Java Source list end")
-
- val cp = javaTask.getClasspath() + javaSources
- val cpWithRt = project.files(basePlugin.getRuntimeJarList())!! + cp
- (task as AbstractCompile).setClasspath(cpWithRt)
- logger.debug("Final Classpath for variant [${variantName}]")
- cpWithRt?.forEach { f -> logger.debug(f.getPath()) }
- logger.debug("Final Classpath end")
+ val androidRT = project.files(basePlugin.getRuntimeJarList())
+ val fullClasspath = javaTask.getClasspath() + (javaSources + androidRT)
+ (task as AbstractCompile).setClasspath(fullClasspath)
})
javaTask.dependsOn(kotlinTaskName)
@@ -259,6 +245,11 @@ open class KotlinAndroidPlugin: Plugin {
}
}
}
+
+ fun getExtention(obj: Any, extensionName: String): T {
+ return (obj as ExtensionAware).getExtensions().getByName(extensionName) as T
+ }
+
}
open class KSpec(val predicate: (T) -> Boolean): Spec {