我们可以将指定的 类 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 文件中排除了不必要的 类
我有 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 文件中排除了不必要的 类