我在项目中玩swagger-codegen,最后我问自己一个问题:是否有关于swagger文件位置的约定?
这是我的情况:
我使用Maven作为我的项目,所以我有标准的Maven结构:
pom.xml
src
|--main
|--java
|--resources
|--webapp
|--test
|--java
|--resources
要使用Swagger生成我的REST API,我必须将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
我的swagger生成文件之后,战争就会生成并且运行正常。
但是,在生成的war中,在WEB-INF / classes文件夹中,我找到了我的api和swaggerconfig文件夹,以及.swagger-codegen-ignore。嗯,这是正常的,因为它们打包在src / main / resources中。
长话短说:我应该将这些文件放在别处(比如src / main / swagger,所以Maven默认会找到它们)?我应该在maven-war-plugin中写一些包含/排除规则(但我觉得这不是一个好习惯)?我在swagger Github上找不到明确的文件。
由于