diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 29fed9425a5..247f37f738d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -495,8 +495,15 @@ private fun loadSubplugins(project: Project): SubpluginEnvironment { try { val subplugins = ServiceLoader.load(KotlinGradleSubplugin::class.java, project.buildscript.classLoader).toList() - val classpath = project.buildscript.configurations.getByName("classpath") - val resolvedClasspathArtifacts = classpath.resolvedConfiguration.resolvedArtifacts.toList() + fun Project.getResolvedArtifacts() = buildscript.configurations.getByName("classpath") + .resolvedConfiguration.resolvedArtifacts + + val resolvedClasspathArtifacts = project.getResolvedArtifacts().toMutableList() + val rootProject = project.rootProject + if (rootProject != project) { + resolvedClasspathArtifacts += rootProject.getResolvedArtifacts() + } + val subpluginClasspaths = hashMapOf>() for (subplugin in subplugins) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 6580b52b9e5..e5b9dd2c267 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -151,4 +151,14 @@ fun getSomething() = 10 assertCompiledKotlinSources(project.relativizeToSubproject("app", file)) } } + + @Test + fun testAndroidExtensions() { + val project = Project("AndroidExtensionsProject", gradleVersion) + val options = defaultBuildOptions().copy(incremental = false) + + project.build("assembleDebug", options = options) { + assertSuccessful() + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/build.gradle new file mode 100644 index 00000000000..38bc633be44 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/build.gradle @@ -0,0 +1,26 @@ +apply plugin: 'android-sdk-manager' +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "com.example.dagger.kotlin" + minSdkVersion 14 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:23.1.1' + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..5063f2b77f8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/AndroidManifest.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/java/com/example/androidextensions/MyActivity.kt b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/java/com/example/androidextensions/MyActivity.kt new file mode 100644 index 00000000000..b9c0985d26d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/java/com/example/androidextensions/MyActivity.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.androidextensions + +import android.os.Bundle +import android.app.Activity +import kotlinx.android.synthetic.main.activity_main.textView + +class HomeActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + this.textView.setText("Hello, world!") + } +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/layout/activity_main.xml b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000000..02b0685b4a4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/values/strings.xml b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/values/strings.xml new file mode 100644 index 00000000000..67b44b1a8cd --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + kotlin + diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/build.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/build.gradle new file mode 100644 index 00000000000..2da8acba68f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/build.gradle @@ -0,0 +1,29 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext.kotlin_version = '1.1-SNAPSHOT' + + repositories { + maven { url 'file://' + pathToKotlinPlugin } + mavenLocal() + jcenter() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "com.android.tools.build:gradle:$androidToolsVersion" + classpath "com.jakewharton.sdkmanager:gradle-plugin:0.12.+" + } +} + +allprojects { + repositories { + maven { url 'file://' + pathToKotlinPlugin } + mavenLocal() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/gradle.properties b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/gradle.properties new file mode 100644 index 00000000000..5fcc74643cf --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-ea -XX:MaxPermSize=512m \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/settings.gradle b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/settings.gradle new file mode 100644 index 00000000000..e7b4def49cb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/resources/testProject/AndroidExtensionsProject/settings.gradle @@ -0,0 +1 @@ +include ':app'