| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * 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. |
| */ |
| // TO debug processor, run: |
| //./gradlew :r:in:k:clean :r:in:k:cC --no-daemon |
| // -Dorg.gradle.debug=true |
| // -Dkotlin.compiler.execution.strategy="in-process" |
| |
| import org.jetbrains.kotlin.gradle.tasks.KotlinCompile |
| |
| plugins { |
| id("AndroidXPlugin") |
| id("com.android.application") |
| id("kotlin-android") |
| // both ksp and kapt are applied. each run in their own variant. |
| id("com.google.devtools.ksp") |
| id("kotlin-kapt") |
| } |
| android { |
| buildFeatures { |
| buildConfig = true |
| } |
| defaultConfig { |
| multiDexEnabled true |
| javaCompileOptions { |
| annotationProcessorOptions { |
| arguments = [ |
| "room.schemaLocation" : "$projectDir/schemas".toString() |
| ] |
| } |
| } |
| } |
| |
| sourceSets { |
| androidTestWithKapt.assets.srcDirs += files("$projectDir/schemas".toString()) |
| androidTestWithKsp.assets.srcDirs += files("$projectDir/schemas-ksp".toString()) |
| } |
| |
| flavorDimensions "processorConfiguration" |
| productFlavors { |
| withKapt { |
| dimension "processorConfiguration" |
| javaCompileOptions { |
| annotationProcessorOptions { |
| arguments = [ |
| "room.schemaLocation" : "$projectDir/schemas".toString(), |
| ] |
| } |
| } |
| } |
| withKsp { |
| dimension "processorConfiguration" |
| } |
| } |
| namespace "androidx.room.integration.kotlintestapp" |
| } |
| |
| dependencies { |
| implementation(project(":room:room-common")) |
| implementation(project(":room:room-runtime")) |
| implementation(project(":room:room-paging")) |
| implementation(projectOrArtifact(":arch:core:core-runtime")) |
| implementation(projectOrArtifact(":lifecycle:lifecycle-livedata")) |
| implementation(projectOrArtifact(":lifecycle:lifecycle-livedata-ktx")) |
| implementation(libs.kotlinStdlib) |
| implementation(libs.kotlinCoroutinesAndroid) |
| implementation(libs.multidex) |
| // depend on the shadowed version so that it tests with the shipped artifact |
| // this is a temporary attribute until KSP and AndroidX plugin supports variants. |
| kspAndroidTestWithKsp( |
| project(path: ":room:room-compiler", configuration: "shadowAndImplementation") |
| ) |
| kaptAndroidTestWithKapt( |
| project(path: ":room:room-compiler", configuration: "shadowAndImplementation") |
| ) |
| androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-livedata-ktx")) |
| androidTestImplementation(libs.testExtJunit) |
| androidTestImplementation(libs.testCore) |
| androidTestImplementation(libs.testRunner) { |
| exclude module: "support-annotations" |
| exclude module: "hamcrest-core" |
| } |
| androidTestImplementation(libs.espressoCore, { |
| exclude group: "com.android.support", module: "support-annotations" |
| exclude module: "hamcrest-core" |
| }) |
| androidTestImplementation(libs.truth) |
| androidTestImplementation(libs.kotlinTest) |
| androidTestImplementation(project(":room:room-guava")) |
| androidTestImplementation(project(":room:room-testing")) |
| androidTestImplementation(project(":room:room-paging-guava")) |
| androidTestImplementation(project(":room:room-paging-rxjava2")) |
| androidTestImplementation(project(":room:room-paging-rxjava3")) |
| // we need latest guava android because room-paging-guava's guava-android gets override by |
| // its kotlinx-coroutines-guava dependency's guava-jre version |
| androidTestImplementation(libs.guavaAndroid) |
| androidTestImplementation(project(":room:room-rxjava2")) |
| androidTestImplementation(project(":room:room-rxjava3")) |
| androidTestImplementation(project(":room:room-ktx")) |
| androidTestImplementation(project(":internal-testutils-common")) |
| androidTestImplementation("androidx.arch.core:core-testing:2.0.1") |
| androidTestImplementation("androidx.paging:paging-runtime:3.1.1") |
| androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-runtime-testing")) |
| androidTestImplementation(libs.rxjava2) |
| testImplementation(libs.mockitoCore) |
| } |
| |
| // KSP does not support argument per flavor so we set it to global instead. |
| ksp { |
| arg("room.schemaLocation","$projectDir/schemas-ksp".toString()) |
| } |
| |
| // Allow usage of Kotlin's @OptIn. |
| tasks.withType(KotlinCompile).configureEach { |
| kotlinOptions { |
| freeCompilerArgs += ["-opt-in=kotlin.RequiresOptIn"] |
| } |
| } |