У меня есть домашняя библиотека, которая генерирует классы DataMapper.
Они генерируются с аннотациями @Singleton
и @Inject
, чтобы иметь возможность вставлять их туда, где они мне нужны.
Но гдеэто не работает, когда Dagger пытается создать дерево зависимостей, эта ошибка показывает:
:data:kaptGenerateStubsDebugKotlin
e: /Users/me/myproject/data/build/tmp/kapt3/stubs/debug/com/myproject/data/di/DataComponent.java:11: error: [Dagger/MissingBinding] error.NonExistentClass cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract com.myproject.domain.repository.ContentRepository contentRepository();
^
error.NonExistentClass is injected at
com.myproject.data.repository.ContentDataRepository.<init>(…, myGeneratedDataMapper, …)
com.myproject.data.repository.ContentDataRepository is injected at
com.myproject.data.di.module.DataModule.contentRepository(contentDataRepository)
com.myproject.domain.repository.ContentRepository is provided at
com.myproject.data.di.DataComponent.contentRepository()
:data:kaptDebugKotlin
:data:kaptDebugKotlin FAILED
Включенные классы:
DataModule (модуль для кинжала)
@Module
class DataModule {
@Provides
@Singleton
fun contentRepository(contentDataRepository: ContentDataRepository): ContentRepository = contentDataRepository
}
DataComponent (компонент для кинжала):
@Singleton
@Component(modules = [DataModule::class])
interface DataComponent {
fun contentRepository(): ContentRepository
}
ContentDataRepository
@Singleton
class ContentDataRepository @Inject constructor(
private val myGeneratedDataMapper: MyGeneratedDataMapper
) : ContentRepository {
...
}
MyGeneratedDataMapper
@Singleton
class MyGeneratedDataMapper @Inject constructor() {
...
}
Дело в том, что если я отключаю капт зависимости от кинжалав gradle.build
, затем выполните сборку, затем включите ее, затем выполните сборку, она работает.
Если я выполню команду clean + build, она не будет работать, та же ошибка.Я хочу, чтобы это работало в один ряд.