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 ca444ee7d7a..1c6318c6bc3 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 @@ -135,9 +135,10 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug ext.getSourceSets().all(object : Action { override fun execute(sourceSet: AndroidSourceSet?) { - if (sourceSet is ExtensionAware) { + if (sourceSet is HasConvention) { val sourceSetName = sourceSet.getName() - val kotlinSourceSet = sourceSet.getExtensions().create("kotlin", javaClass(), sourceSetName, project.getFileResolver())!! + val kotlinSourceSet = KotlinSourceSetImpl( sourceSetName, project.getFileResolver()) + sourceSet.getConvention().getPlugins().put("kotlin", kotlinSourceSet) val kotlinDirSet = kotlinSourceSet.getKotlin() kotlinDirSet.srcDir(project.file("src/${sourceSetName}/kotlin")) @@ -264,7 +265,14 @@ open class KotlinAndroidPlugin [Inject] (val scriptHandler: ScriptHandler): Plug } fun getExtention(obj: Any, extensionName: String): T { - return (obj as ExtensionAware).getExtensions().getByName(extensionName) as T + if (obj is ExtensionAware) { + val result = obj.getExtensions().findByName(extensionName) + if (result != null) { + return result as T + } + } + val result = (obj as HasConvention).getConvention().getPlugins()[extensionName] + return result as T } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/build.gradle index a7dd2eff81e..2fac2cafaa1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/build.gradle @@ -25,6 +25,14 @@ android { annotations = "kotlinAnnotations" } + sourceSets { + main { + kotlin { + srcDirs = ['root/kotlin'] + } + } + } + defaultConfig { minSdkVersion 7 targetSdkVersion 16 diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/root/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt similarity index 100% rename from libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/src/main/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt rename to libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/Android/root/kotlin/org/jetbrains/kotlin/gradle/test/androidalfa/MainActivity2.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/gradle.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/gradle.properties new file mode 100644 index 00000000000..59b261a6689 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidProject/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-XX:MaxPermSize=512m \ No newline at end of file