【发布时间】:2020-10-12 09:33:17
【问题描述】:
我有 2 个 micronaut (groovy) 项目,称为项目 A 和项目 B
项目 B 有控制器和服务(包 com.service , com.controller ) 但我只从包 com.service 创建了 jar com.service 包中的代码有 @Singleton 注释和 @Scheduled
我已启用注释处理作为两个项目的链接 (https://docs.micronaut.io/latest/guide/index.html#ideaSetup) 请参阅下面我的 gradle 代码以生成 JAR 文件(输出文件为 project-b-libs-0.x.jar)
task createLibraryJar(type: Jar) {
baseName( getArchivesBaseName() + "-libs")
from sourceSets.main.output
includeEmptyDirs = false
include '**/service/**/*.class'
}
然后我将 proejct-b-libs-0.x.jar 添加到项目 A gradle的依赖如下
dependencies {
annotationProcessor "io.micronaut:micronaut-inject-java"
implementation("io.micronaut:micronaut-validation")
implementation("io.micronaut.groovy:micronaut-runtime-groovy")
implementation("javax.annotation:javax.annotation-api")
implementation("io.micronaut:micronaut-http-client")
runtimeOnly("ch.qos.logback:logback-classic")
compileOnly files('libs/project-b-libs-0.4.jar')
compile "io.micronaut:micronaut-inject"
}
最后,在我尝试从 JAR 文件中的类调用 @Inject 对象后,它在运行时显示错误
原因:io.micronaut.context.exceptions.BeanContextException:错误 加载 bean [com.service.TestService]: com/service/StripePaymentService
项目 A 有 com.service.TestService 来调用 JAR 文件中的 com.service.StripePaymentService
对不起我的英语,谢谢你试图理解我
【问题讨论】: