Search code examples
androidmoduleandroid-roomandroidxclean-architecture

How to include Room persistence library in java-library?


I have three modules

app module

plugins {
    id 'com.android.application'
    id 'kotlin-android'
}
//..

domain module

plugins {
    id 'java-library'
    id 'kotlin'
}
//..

data module

plugins {
    id 'java-library'
    id 'kotlin'
    id 'kotlin-kapt'

}
//..

i am trying to add room library in data module

//..
java {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

dependencies {
implementation project(path: ':domain')

//coroutine
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutine_version"

//room
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
kapt("androidx.room:room-compiler:$room_version")
implementation("androidx.room:room-ktx:$room_version")
}

but I am getting this error

Could not resolve androidx.room:room-runtime:2.3.0.

i already have google() inside project module

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

but it keeps telling me that it doesn't recognize room library!


Solution

  • Data Module should be of type Android Library since I am using Room persistence library which can't be used inside java library because it depends on android platform apis.