diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
index 682f0f3a1e1..f836e7ff630 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt
@@ -154,10 +154,11 @@ open class Kapt3AndroidIT : Kapt3BaseIT() {
val project = Project("android-databinding", directoryPrefix = "kapt2")
setupDataBinding(project, "app")
- project.build("assembleDebug") {
+ project.build("assembleDebug", "assembleAndroidTest") {
assertSuccessful()
assertKaptSuccessful()
assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/BR.java")
+ assertFileExists("library/build/generated/source/kapt/debugAndroidTest/android/databinding/DataBinderMapperImpl.java")
if (isLegacyAndroidGradleVersion(androidGradlePluginVersion)) {
assertFileExists("app/build/generated/source/kapt/debug/com/example/databinding/databinding/ActivityTestBinding.java")
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle
index 38b16facd3c..8c918b3bc8c 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/build.gradle
@@ -11,6 +11,7 @@ android {
targetSdkVersion 24
versionCode 1
versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
@@ -30,7 +31,8 @@ repositories {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- kapt "com.android.databinding:compiler:$android_tools_version"
+ //kapt "com.android.databinding:compiler:$android_tools_version"
+ kaptAndroidTest "junit:junit:4.12"
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml
new file mode 100644
index 00000000000..5ee04095487
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt
new file mode 100644
index 00000000000..5b8b8f33c7c
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/app/src/androidTest/java/BlankActivity.kt
@@ -0,0 +1,5 @@
+package com.example.databinding.test
+
+import android.app.Activity
+
+class BlankActivity : Activity() {}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle
new file mode 100644
index 00000000000..a893867b0d9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/build.gradle
@@ -0,0 +1,39 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-android-extensions'
+
+android {
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 27
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ }
+ }
+
+ dataBinding { enabled = true }
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ testImplementation 'junit:junit:4.12'
+
+ androidTestImplementation 'com.android.support.test:runner:1.0.2'
+ androidTestImplementation "com.android.support.test:rules:1.0.2"
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
+}
+
+repositories {
+ mavenCentral()
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml
new file mode 100644
index 00000000000..663d4d59ec7
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt
new file mode 100644
index 00000000000..c1b07bebf1a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/BlankActivity.kt
@@ -0,0 +1,6 @@
+package org.maw.library
+
+import android.support.v7.app.AppCompatActivity
+
+class BlankActivity : AppCompatActivity() {
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt
new file mode 100644
index 00000000000..e757840c8b9
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/androidTest/java/org/maw/library/ExampleInstrumentedTest.kt
@@ -0,0 +1,33 @@
+package org.maw.library
+
+import android.support.test.annotation.UiThreadTest
+import android.support.test.rule.ActivityTestRule
+import android.support.test.runner.AndroidJUnit4
+import android.view.ViewGroup
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see [Testing documentation](http://d.android.com/tools/testing)
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+
+ @get:Rule
+ var activityTestRule = ActivityTestRule(BlankActivity::class.java)
+
+
+ @UiThreadTest
+ @Test
+ fun createAndAddView() {
+
+ val container = activityTestRule.activity.findViewById(android.R.id.content)
+ val testView = TestView(activityTestRule.activity)
+
+ container.addView(testView)
+
+ }
+}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..58cb0954ce6
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt
new file mode 100644
index 00000000000..944ef26081a
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/java/org/maw/library/TestView.kt
@@ -0,0 +1,52 @@
+package org.maw.library
+
+import android.content.Context
+import android.databinding.BindingAdapter
+import android.databinding.DataBindingComponent
+import android.databinding.DataBindingUtil
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.widget.FrameLayout
+import android.widget.TextView
+import org.maw.library.databinding.TestViewBinding
+
+class TestView @JvmOverloads constructor(
+ context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+) : FrameLayout(context, attrs, defStyleAttr) {
+
+ init {
+ DataBindingUtil.inflate(
+ LayoutInflater.from(context),
+ R.layout.test_view,
+ this,
+ true,
+ object : DataBindingComponent {
+ override fun getTextLabelBindingAdapter(): TextLabelBindingAdapter {
+ return TextLabelBindingAdpaterImpl()
+ }
+ }
+ )
+ }
+}
+
+interface TextLabelBindingAdapter {
+ @BindingAdapter("textLabel")
+ fun setTextLabel(
+ errorMessageView: TextView,
+ textLabelType: Int
+ )
+}
+
+class TextLabelBindingAdpaterImpl : TextLabelBindingAdapter {
+ override fun setTextLabel(
+ errorMessageView: TextView,
+ textLabelType: Int
+ ) {
+ when (textLabelType) {
+ 0 -> errorMessageView.text = "Zero"
+ 1 -> errorMessageView.text = "One"
+ 2 -> errorMessageView.text = "Two"
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml
new file mode 100644
index 00000000000..7d571ef8cd4
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/layout/test_view.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml
new file mode 100644
index 00000000000..49fc91e1dd8
--- /dev/null
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/library/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ library
+
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle
index e7b4def49cb..33069973b21 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/settings.gradle
@@ -1 +1 @@
-include ':app'
+include ':app', ':library'
diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt
index 031afcc42cd..d9ce72e13b4 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/kapt/Kapt3KotlinGradleSubplugin.kt
@@ -211,11 +211,9 @@ class Kapt3KotlinGradleSubplugin : KotlinGradleSubplugin {
val kaptExtension = project.extensions.getByType(KaptExtension::class.java)
- val nonEmptyKaptConfigurations = kaptConfigurations.filter { it.dependencies.isNotEmpty() }
-
val context = Kapt3SubpluginContext(
project, kotlinCompile, javaCompile,
- kaptVariantData, sourceSetName, kotlinCompilation, kaptExtension, nonEmptyKaptConfigurations
+ kaptVariantData, sourceSetName, kotlinCompilation, kaptExtension, kaptConfigurations
)
val kaptGenerateStubsTask = context.createKaptGenerateStubsTask()