Мой проект, project
, использовал HK2 для DI, и сейчас я пытаюсь перенести его на использование dagger2. Это зависит от библиотеки lib
, которая использует HK2 для DI. Зависимости управляются с помощью Gradle.
Один из моих классов выглядит следующим образом:
package com.mine;
import lib.LibService;
import lib.LibType;
public class MyClass {
private final LibService<LibType> service;
@Inject
public MyClass(LibService<LibType> service) {
this.service = service;
}
//...
}
Когда я пытаюсь запустить код, я получаю ошибку, вызванную HK2: There was no object available for injection at SystemInjecteeImpl(requiredType=LibService<LibType>,parent=MyClass,...)
. Проходя через отладчик, я вижу, что HK2 обрабатывает аннотацию @Inject
вместо Dagger2. Вполне вероятно, что мои модули Dagger2, компоненты и т. Д. c. не совсем правы, и мне нужно это исправить. Несмотря на это, я не хочу, чтобы HK2 "обрабатывал" @Inject
в конструкторе MyClass
. Чтобы усложнить ситуацию, есть много других переходных зависимостей от lib
, которые я хочу, например javax.ws.rs.POST
.
Я попытался удалить HK2 из моих зависимостей, но это вызывает ошибку Caused by: java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.BindingBuilder
изнутри lib
.
configurations.all {
exclude group: 'org.glassfish.hk2'
}
Как настроить Gradle на использование hk2 для lib
, но НЕ для MyClass
или других вещей в project
, включая другие переходные зависимости от lib
, которые Хочу?