plugins { id 'java' id 'org.hidetake.swagger.generator' } apply from: '../../gradle/coverage/java-coverage.gradle' dependencies { implementation project(':metadata-auth:auth-api') implementation project(':metadata-service:auth-impl') implementation project(':metadata-service:factories') implementation project(':metadata-service:openapi-servlet') implementation project(':metadata-service:openapi-servlet:models') implementation project(':metadata-models') implementation externalDependency.servletApi implementation(externalDependency.springBootStarterValidation) { exclude group: 'org.apache.tomcat.embed', module: 'tomcat-embed-el' } implementation externalDependency.springBoot implementation externalDependency.springCore implementation externalDependency.springDocUI implementation externalDependency.springWeb implementation externalDependency.springWebMVC implementation externalDependency.springBeans implementation externalDependency.springContext implementation externalDependency.reflections implementation externalDependency.slf4jApi compileOnly externalDependency.lombok implementation externalDependency.antlr4Runtime implementation externalDependency.antlr4 annotationProcessor externalDependency.lombok testImplementation externalDependency.testng testImplementation externalDependency.mockito testImplementation externalDependency.springBootTest swaggerCodegen externalDependency.swaggerCli swaggerCodegen project(':metadata-service:openapi-entity-servlet:generators') } sourceSets { main { java { srcDirs = ["$buildDir/openapi/generated/src/main/java", 'src/main/java'] } } } task mergeApiComponents(dependsOn: ':metadata-models:generateJsonSchema') { doLast { mkdir("$buildDir/openapi") File combined = file("$buildDir/openapi/open-api.yaml") def components = file("${project(':metadata-models').projectDir}/src/generatedJsonSchema/combined/open-api-components.yaml").getText('UTF-8') def api = file("$projectDir/src/main/resources/entity-v2.0.yml").getText('UTF-8') def paths = file("${project(':metadata-models').projectDir}/src/generatedJsonSchema/combined/open-api-paths.yaml").getText('UTF-8') combined.text = (components + paths + api).replaceAll("---\n", "\n") } outputs.file(file("$buildDir/openapi/open-api.yaml")) } // https://github.com/int128/gradle-swagger-generator-plugin#task-type-generateswaggercode task openApiGenerate(type: GenerateSwaggerCode, dependsOn: [mergeApiComponents, ':metadata-service:openapi-entity-servlet:generators:jar']) { inputFile = file("$buildDir/openapi/open-api.yaml") outputDir = file("$buildDir/openapi/generated") // custom generator class language = 'io.datahubproject.CustomSpringCodegen' components = ["apis"] templateDir = file("$projectDir/src/main/resources/JavaSpring") additionalProperties = [ 'group-id' : "io.datahubproject", 'dateLibrary' : "java8", 'java11' : "true", 'modelPropertyNaming': "original", 'modelPackage' : "io.datahubproject.openapi.generated", 'apiPackage' : "io.datahubproject.openapi.v2.generated.controller", 'delegatePattern' : "false" ] } tasks.getByName("compileJava").dependsOn(openApiGenerate)