swagger-codegen文件位置

时间:2016-12-21 08:35:39

标签: java maven swagger swagger-codegen

我在项目中玩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上找不到明确的文件。

由于

0 个答案:

没有答案