GeekFactory

int128.hatenablog.com

Gradle Swagger Generator Plugin 2.6.0をリリースした

Gradle Swagger Generator Plugin 2.6.0をリリースしました。OpenAPI YAMLのバリデーション、コード生成、Swagger UI生成を行うためのプラグインです。

github.com

New features

複数のOpenAPI YAMLを扱う場合に簡潔に記述できるようになりました。これまではYAMLごとに自分でタスクを定義する必要がありましたが、2.6.0からは swaggerSources ブロックに列挙できるようになりました。

swaggerSources {
    petstoreV1 {
        inputFile = file('v1-petstore.yaml')
        code {
            language = 'spring'
            configFile = file('v1-config.json')
        }
    }
    petstoreV2 {
        inputFile = file('v2-petstore.yaml')
        code {
            language = 'spring'
            configFile = file('v2-config.json')
        }
    }
}

コードやSwagger UIを生成する前にYAMLバリデーションを行いたい場合は下記の1行を付け足します。

        code {
            language = 'spring'
            configFile = file('v2-config.json')
            dependsOn validation    // ←追加
        }

また、外部リポジトリからテンプレートを読み込めるようになりました。複数のプロジェクトで共通のテンプレートを利用したい場合に役に立ちます。

repositories {
  // NexusやArtifactoryのリポジトリを指定
  maven {
    url 'https://example.com/nexus-or-artifactory'
  }
  jcenter()
}

dependencies {
  swaggerCodegen 'io.swagger:swagger-codegen-cli:2.2.3'
  // NexusやArtifactoryにpublishされたテンプレートを指定
  swaggerTemplate 'com.example:swagger-templates:1.0.0'
}

swaggerSources {
  petstore {
    inputFile = file('petstore.yaml')
    code {
      language = 'spring'
      // テンプレートJAR内のパスを指定
      templateDir = file("${resolveSwaggerTemplate.destinationDir}/spring-mvc")
    }
  }
}

このように、大規模なプロジェクトでSwagger CodegenやSwagger UIを活用する場合に有用な機能を追加しています。

詳しくはREADMEやサンプルプロジェクトを参照してください。