我正在尝试使用 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/