方法签名在编译gradle java应用程序和引用其他项目时发生了变化



我有两个项目被称为(CommonApiGateway)。通用的是一个Gradle java项目,apiggateway是一个Micronaut java应用程序。在公共项目中,我保留了所有公共的东西,并将jar引用到Apigateway项目。

共同项目

下面的代码是用./gradlew build 编译的
@Validated
public interface IProductOperation {
@Get(value = "/search/{text}")
@Secured(SecurityRule.IS_ANONYMOUS)
Flux<?> freeTextSearch(@NotBlank String text);

@Get(value = "/{?searchCriteria*}")
@Secured(SecurityRule.IS_ANONYMOUS)
Mono<?> find(FilterProductModel searchCriteria);
}

API网关实现了公共项目中的IProductOperation接口。. 当我导航到代码库时,可以看到生成了以下代码

@Validated
public interface IProductOperation {
@Get("/search/{text}")
@Secured({"isAnonymous()"})
Flux<?> freeTextSearch(@NotBlank String var1);

@Get("/{?searchCriteria*}")
@Secured({"isAnonymous()"})
Mono<?> find(FilterProductModel var1);
}
现在,当我编译第二个应用程序Apigateway项目中,我得到一个异常作为The route declares a uri variable named [text], but no corresponding method argument is present,这是有效的,因为freeTextSearch()find()方法中的参数被更改为var1

我在公共项目中有以下依赖项

dependencies {
annotationProcessor "io.micronaut:micronaut-inject-java:3.5.0"
annotationProcessor "io.micronaut:micronaut-validation:3.5.0"
implementation('io.swagger.core.v3:swagger-annotations:2.2.0')
implementation 'io.micronaut:micronaut-core:3.5.0'
implementation "io.micronaut:micronaut-inject:3.5.0"
implementation 'io.micronaut:micronaut-validation:3.5.0'
implementation ('io.micronaut.reactor:micronaut-reactor:2.2.2')
implementation("io.micronaut.security:micronaut-security-jwt:3.6.0")
}

我已经构建了应用程序并发布到本地日志。

文档中有一节关于保留参数名https://docs.micronaut.io/latest/guide/#retainparameternames

最新更新