gpt4 book ai didi

java - 如何在项目目录中包含 swagger 生成的类

转载 作者:行者123 更新时间:2023-12-05 06:59:35 25 4
gpt4 key购买 nike

我正在尝试使用 Swagger Codegen 为我的 spring boot 项目生成模型类。我在网上找到了一些引用资料,并在我的 pom.xml 中包含了以下插件:

        <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>
${project.basedir}/src/main/resources/Contract-v1.yml
</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>${project.groupId}.swagger.api</apiPackage>
<modelPackage>${project.groupId}.swagger.model</modelPackage>
<supportingFilesToGenerate>
ApiUtil.java
</supportingFilesToGenerate>
<configOptions>
<sourceFolder>src/main/java/</sourceFolder>
<delegatePattern>true</delegatePattern>
<interfaceOnly>true</interfaceOnly>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>

我运行 mvn install类在目录 /target/generated-sources/openapi 中生成.但是我无法在我的 REST Controller 类中导入这些生成的类。

我的理解是 <modelPackage>字段用于标识必须放置生成的类的包。我对此是否正确?

即使这些生成的类在正确的包中,因为它们不在 src/main/java 中,我可能无法将它们导入其他类。

有没有办法在src/main/java下获取这些生成的类?目录或者我是否在 maven 配置中丢失了一些东西,因为这些文件对其他类不可用?

最佳答案

我也想实现您正在尝试的目标,虽然我一开始摸索着但最终还是弄明白了,我不需要做任何特别的事情。需要注意的是,我使用了 swagger-codegen-maven-plugin 而不是 openapi-generator-maven-plugin

这是我的配置在最新版本当天的样子swagger-codegen-maven-plugin 版本 3.0.35。当我运行 mvn compile 时,我所有的类都在目标文件夹中生成,并且 src main java 被标记为源文件夹。通过引用生成的代码API,我可以直接在项目中直接实现自己的 Controller 。顺便说一句,swagger-codegen-maven-plugin 的文档不是最好的,我不得不看几个地方才有意义。添加一些引用

一般配置参数: https://github.com/swagger-api/swagger-codegen/tree/master/modules/swagger-codegen-maven-plugin

配置选项: https://github.com/swagger-api/swagger-codegen/issues/7795

<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.35</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/api-docs/swagger.yaml</inputSpec>

<generateApis>true</generateApis>
<generateModels>true</generateModels>
<generateSupportingFiles>false</generateSupportingFiles>
<language>spring</language>

<configOptions>

<basePackage>com.company.project</basePackage>
<apiPackage>com.company.project.api</apiPackage>
<modelPackage>com.company.project.model</modelPackage>

<interfaceOnly>true</interfaceOnly>
<sourceFolder>src/main/java</sourceFolder>
<hideGenerationTimestamp>true</hideGenerationTimestamp>
<dateLibrary>java11</dateLibrary>
<ignoreUnknownJacksonAnnotation>true</ignoreUnknownJacksonAnnotation>
<notNullJacksonAnnotation>true</notNullJacksonAnnotation>
<dateLibrary>false</dateLibrary>
<useBeanValidation>true</useBeanValidation>
<serializableModel>true</serializableModel>

</configOptions>

</configuration>
</execution>
</executions>
</plugin>

关于java - 如何在项目目录中包含 swagger 生成的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64372072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com