我在一个项目上玩 swagger-codegen,最后我问自己一个问题:swagger 文件的位置有什么约定吗?
这是我的情况:
我在我的项目中使用 Maven,所以我有标准的 Maven 结构:
pom.xml
src
|--main
|--java
|--resources
|--webapp
|--test
|--java
|--resources
为了使我的 REST API 使用 Swagger 生成,我必须将 swagger.json、一些小胡子模板和 .swagger-codegen-ignore 放在某处。我已经把它们(自然地?)放在 src/main/resources 中:
resources
|--api
|--v2
|--swagger.json
|--swaggerconfig
|--api.mustache
|--[...]
|--.swagger-codegen-ignore
我已经使用正确的 swagger-codegen-maven-plugin 配置了我的 pom.xml,并将打包设置为 war,以便生成我的 war(以便将其部署在 Tomcat 中)。提取物:
[...]
<packaging>war</packaging>
[...]
<build>
<finalName>my-project</finalName>
<plugins>
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${basedir}/src/main/resources/api/v2/swagger.json</inputSpec>
<language>jaxrs</language>
<templateDirectory>${basedir}/src/main/resources/swaggerconfig</templateDirectory>
<addCompileSourceRoot>true</addCompileSourceRoot>
<configOptions>
<library>jersey2</library>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
<!-- .swagger-codegen-ignore must be located at the root as per documentation -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/generated-sources/swagger</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>.swagger-codegen-ignore</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在mvn install
我的大摇大摆生成的文件生成并成功编译后,战争就会生成并且工作正常。
但是,在生成的战争中,在 WEB-INF/classes 文件夹中,我找到了我的 api 和 swaggerconfig 文件夹,以及 .swagger-codegen-ignore。好吧,这是正常的,因为它们被打包在 src/main/resources 中。
长话短说:我应该把这些文件放在别处吗(比如 src/main/swagger 以便 Maven 默认找到它们)?我是否应该在 maven-war-plugin 中编写一些包含/排除规则(但我觉得这不是一个好习惯)?我在 swagger Github 上没有找到明确的文档。
谢谢