当前位置: 首页 > 知识库问答 >
问题:

Swagger Codemen, Maven插件:限制服务器生成

窦啸
2023-03-14

我想使用swagger codegen maven插件为我的API生成JAX-RS服务器存根,但我想使用我自己的服务实现类,而不是生成的服务实现类。除了这个类,还有什么方法可以生成所有的东西吗?对于我的API,该工具生成四个API类:ProfilesApi、ProfilesApiService、ProfilesApiServiceFactory和ProfilesApiServiceImpl。

我目前的maven配置:

                     <configuration>
                        <inputSpec>src/main/resources/Profile.json</inputSpec>
                         <language>jaxrs</language>
                        <configOptions>
                            <dateLibrary>java8</dateLibrary>
                        </configOptions>
                        <models>Profile,PageInformation,ProfileResult</models>
                        <modelPackage>com.myApp.profile-api-model</modelPackage>
                        <apiPackage>com.myApp.profile-api-webapp</apiPackage>
                        <library>jersey2</library>
                        <environmentVariables>
                            <!-- change default client library (here until plugin 2.1.5). Doesn't seem to work! -->
                            <library>jersey2</library>
                            <!-- generate all models -->
                            <models></models>
                            <!-- generate all APIs -->
                            <apis></apis>
                            <!-- generate just the supporting files that are Java source code (not project build files) -->
                            <supportingFiles>ApiException.java,ApiOriginFilter.java,ApiResponseMessage.java,JacksonJsonProvider.java,LocalDateProvider.java,LocalDateTimeProvider.java,NotFoundException.java,StringUtil.java,web.xml,ProfilesApi.java,ProfilesApiService.java,ProfilesApiServiceFactory.java</supportingFiles>
                        </environmentVariables>
                    </configuration>

共有3个答案

长孙骏
2023-03-14

必须使用codegen ignore文件来防止生成实现类

李勇
2023-03-14

这里的解决方案有两个步骤。

>

  • 添加**/*控制器。java或**/*Impl。java到。swagger codegen忽略文件(在目标/生成的源中)。根据使用的语言,默认实现在*控制器中提供。java或*Impl。java文件。一旦默认实现从生成中排除,您就可以在自己的类中实现生成的接口。您自己的类中的代码不会在mvn clean上刷新。

    swagger codegen ignore文件本身是一个自动生成的文件,因此,当您执行mvn清理时,在步骤1中添加的任何内容都会被刷新。要避免这种情况,请在pom中添加以下插件:

    <plugin>                
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.6.1</version>
    <configuration>
    <excludeDefaultDirectories>true</excludeDefaultDirectories>
    <filesets>
    <fileset>
    <directory>${project.build.directory}</directory>
    <excludes>
    <exclude>generated-sources/.swagger-codegen-ignore</exclude>
    </excludes>
    </fileset>
    </filesets>
    </configuration>
    </plugin>
    

  • 宗乐池
    2023-03-14

    正确的方法是通过两个配置选项,

    我不确定Jersey模板是否检查

    在mavenpom中。xml,您的

    <generateSupportingFiles>false</generateSupportingFiles>
    <configOptions>
        <interfaceOnly>true</interfaceOnly>
    ...
    </configOptions>
    

    不幸的是,这些配置选项没有很好的文档记录,您必须做大量的研究,并在一些github问题上偶然发现它们。

     类似资料:
    • 我添加了maven配置,如下所示。 我正在通过“mvn proc-jar: run”执行它,但是它跳过了grpc服务存根,只将“消息”转换为java代码。 输出为 我有一个简单的proto文件定义为 我只输出生成为HelloReply、HelloReplyOrBuilder、HelloRequest、HelloRequestOrBuilder、HelloWorldProto的文件。缺少迎宾Grpc

    • 目前插件市场目前不再上架短信验证、云储存、编辑器这三个类别的插件。 目前插件如有涉及包括但不限于游戏、分销、夺宝、返利、借贷、数字币、个人支付、海外支付、采集、小说、抽奖、点卡、外挂功能的均无法上架插件市场。

    • 嗨,我有一个包含两个库模块的gradle android项目: 所以LibB依赖于LibA。因此,LibB 的 build.gradle 文件如下所示: 如您所见,我想为gradle项目中的每个库模块生成. aar文件。到目前为止还不错,但是生成对LibA具有正确依赖关系的pom.xml文件并没有像预期的那样工作: pom。LibB的xml文件如下所示: 有没有办法在生成的pom文件中指定LibA

    • 我使用maven codegen插件只是从我的yml文件生成控制器和模型文件的接口。这是一个java Spring Boot程序。 插件配置: 关键是在我的目标/生成的源目录/swagger中生成了许多我不需要的文件,例如: . swagger-codemen/Version . swagger-codemen-忽略 pom-xml README. md 我只需要在src/main/java…中生

    • 我尝试使用Wildfly-maven-plugin构建示例服务。源代码是: https://github.com/wildfly/quickstart/tree/10.x/helloworld-html5 我想简单地在maven pom中使用wildfly maven插件。xml: 要构建类似于测试服务器的命令: 运行服务器。 我可以找到自述文件。但是写的网址似乎是错的。 我测试链接: http:

    • 我想为Kafka服务器[9092端口]设置最大和最小内存值 假设最大值为2 GB,则内存使用量不应超过2GB,但当前超过它。 我有链接-https://kafka.apache.org/documentation/#java 从Apache站点配置 但是我不知道如何配置它。 我的目标是设置最大内存限制值,Kubernetes仪表板中的内存值不应超过最大内存限制值。 注意-设置最大内存限制值不应在K