我们可以将指定的 类 jar 文件从另一个 mincroanut 项目导入到 micronaut 项目吗

can we import the specified classes jar file from another mincroanut project to an micronaut project

我有 2 个 micronaut (groovy) 项目,称为项目 A 和项目 B

项目 B 有控制器和服务(包 com.service , com.controller ) 但我只从包 com.service 创建了 jar com.service 包中的代码有 @Singleton 注释和 @Scheduled

并且我已经为两个项目启用了注释处理作为 link (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 文件中的 class 调用 @Inject 对象后,它在 运行 时间

显示错误

Caused by: io.micronaut.context.exceptions.BeanContextException: Error loading bean [com.service.TestService]: com/service/StripePaymentService

项目 A 有 com.service.TestService 调用 com.service.StripePaymentService,它在 JAR 文件中

对不起我的英语,谢谢你试图理解我

compile files('libs/project-b-libs-0.4.jar')

我只使用 compile ,而不是 compileOnly ,并且当我提取 jar 文件时不能使用上面 gralde 脚本中的 jar 文件,一些 mincronaut 的东西丢失了

所以我尝试另一个 gradle 任务的脚本如下(从包含更改为排除)

task createLibraryJar(type: Jar) {

    baseName( getArchivesBaseName() + "-libs")
    from sourceSets.main.output
    includeEmptyDirs = false
    exclude '**/controller/**/*.class'

}

它之所以有效,是因为 micronaut 的东西仍在 JAR 文件中,我只从我的 jar 文件中排除了不必要的 类