方法签名在编译Gradle Java应用程序并参考其他项目时发生了变化

发布于 2025-02-01 16:52:38 字数 1885 浏览 4 评论 0原文

我有两个项目称为(commonapigateway)。常见是一个gradle java项目,而Apigateway是Micronaut Java应用程序。在共同的项目中,我将所有常见的事物保留下来,并将罐子引用到Apigeway项目。

常见项目

以下代码与./ 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 Gateway 实现iProductoperation接口公共项目。当我导航到代码库时,我可以看到以下代码

@Validated
public interface IProductOperation {

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


    @Get("/{?searchCriteria*}")
    @Secured({"isAnonymous()"})
    Mono<?> find(FilterProductModel var1);

}

现在生成时,当我编译第二个应用程序 apigateway project时,我会得到一个例外,因为路由声明一个名为[text]的URI变量,但是没有相应的方法参数是有效的,因为freetextsearch() and 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。

I have two projects known as (Common and ApiGateway).The common is a Gradle java project and ApiGateway is a Micronaut java application. In the common project, I am keeping all the common things and referencing the jar to the Apigateway project.

Common project

The below code is compiled with ./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);
}

The API gateway implements the IProductOperation interface which is in the common project. When I navigate to the code base, I can see the below code is generated

@Validated
public interface IProductOperation {

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


    @Get("/{?searchCriteria*}")
    @Secured({"isAnonymous()"})
    Mono<?> find(FilterProductModel var1);

}

Now when I compile the second application the Apigateway project, I get an exception as The route declares a uri variable named [text], but no corresponding method argument is present which is valid because the parameter in freeTextSearch() and find() methods got changed to var1.

I have below dependency in the common project

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")
}

I have build the application and publish to local mavel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤寂小茶 2025-02-08 16:52:38

The documentation has a section about retaining parameter names https://docs.micronaut.io/latest/guide/#retainparameternames

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文