编译 gradle java 应用程序并引用其他项目时更改了方法签名
Methods signature got changed while compiling the gradle java application and referencing to other project
我有两个项目(Common
和 ApiGateway
)。常见的是 Gradle java 项目,ApiGateway 是 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")
}
我已经构建应用程序并发布到本地 mavel。
文档中有一节是关于保留参数名称的https://docs.micronaut.io/latest/guide/#retainparameternames
我有两个项目(Common
和 ApiGateway
)。常见的是 Gradle java 项目,ApiGateway 是 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")
}
我已经构建应用程序并发布到本地 mavel。
文档中有一节是关于保留参数名称的https://docs.micronaut.io/latest/guide/#retainparameternames