我试图在我的多模块项目中使用依赖项注入,在该项目中我想从库模块中注入bean。但是,它失败了,因为它找不到该bean。
项目根目录settings.gradle
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
gradlePluginPortal()
}
plugins {
id 'io.quarkus' version "${quarkusPluginVersion}"
}
}
include ':service-module'
include ':library-module'
服务模块build.gradle
尝试编译,以及实现
dependencies {
compile project(":library-module")
// implementation project(":library-module")
}
来自库模块的Bean
import javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class LibraryBean {
public void hello() {
System.out.println("Hello");
}
}
服务模块发生注入的地方
@ApplicationScoped
public class Application {
@Inject
VaultConnector vaultConnector;
}
Stacktrace
对com.mylibrary.LibraryBean和限定词[@Default]-Java成员:com.myservice.Application#LibraryBean-在CLASS bean [types = [com.myservice.Application,java.lang.Object],qualifiers = [@ Default,@Any],上声明,target = com.myservice.Application]
我不确定此问题是否与Quarkus有关,还是CDI和Gradle模块存在的一般问题。
如何使DI跨模块工作?
您的库模块中是否有beans.xml
文件?有关更多信息,请参见此问题/答案:https://stackoverflow.com/a/55513723/742081