143 lines
4.8 KiB
Groovy
143 lines
4.8 KiB
Groovy
import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
|
|
|
|
plugins {
|
|
id "org.openapi.generator" version "5.2.0"
|
|
id "java-library"
|
|
}
|
|
|
|
def specFile = "$projectDir/src/main/openapi/config.yaml"
|
|
|
|
task generateApiServer(type: GenerateTask) {
|
|
def serverOutputDir = "$buildDir/generated/api/server"
|
|
|
|
inputs.file specFile
|
|
outputs.dir serverOutputDir
|
|
|
|
generatorName = "jaxrs-spec"
|
|
inputSpec = specFile
|
|
outputDir = serverOutputDir
|
|
|
|
apiPackage = "io.airbyte.api"
|
|
invokerPackage = "io.airbyte.api.invoker"
|
|
modelPackage = "io.airbyte.api.model"
|
|
|
|
importMappings = [
|
|
'SourceDefinitionSpecification' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'SourceConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
]
|
|
|
|
generateApiDocumentation = false
|
|
|
|
configOptions = [
|
|
dateLibrary : "java8",
|
|
generatePom : "false",
|
|
interfaceOnly: "true"
|
|
]
|
|
}
|
|
compileJava.dependsOn tasks.generateApiServer
|
|
|
|
task generateApiClient(type: GenerateTask) {
|
|
def clientOutputDir = "$buildDir/generated/api/client"
|
|
|
|
inputs.file specFile
|
|
outputs.dir clientOutputDir
|
|
|
|
generatorName = "java"
|
|
inputSpec = specFile
|
|
outputDir = clientOutputDir
|
|
|
|
apiPackage = "io.airbyte.api.client"
|
|
invokerPackage = "io.airbyte.api.client.invoker"
|
|
modelPackage = "io.airbyte.api.client.model"
|
|
|
|
importMappings = [
|
|
'SourceDefinitionSpecification' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'SourceConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
]
|
|
|
|
library = "native"
|
|
|
|
generateApiDocumentation = false
|
|
|
|
configOptions = [
|
|
dateLibrary : "java8",
|
|
generatePom : "false",
|
|
interfaceOnly: "true"
|
|
]
|
|
}
|
|
compileJava.dependsOn tasks.generateApiClient
|
|
|
|
task generateApiDocs(type: GenerateTask) {
|
|
def docsOutputDir = "$buildDir/generated/api/docs"
|
|
|
|
generatorName = "html"
|
|
inputSpec = specFile
|
|
outputDir = docsOutputDir
|
|
|
|
apiPackage = "io.airbyte.api.client"
|
|
invokerPackage = "io.airbyte.api.client.invoker"
|
|
modelPackage = "io.airbyte.api.client.model"
|
|
|
|
importMappings = [
|
|
'SourceDefinitionSpecification' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'SourceConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode',
|
|
'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode',
|
|
]
|
|
|
|
generateApiDocumentation = false
|
|
|
|
configOptions = [
|
|
dateLibrary : "java8",
|
|
generatePom : "false",
|
|
interfaceOnly: "true"
|
|
]
|
|
|
|
doLast {
|
|
def target = file(rootProject.file("docs/reference/api/generated-api-html"))
|
|
delete target
|
|
mkdir target
|
|
copy {
|
|
from outputDir
|
|
include "**/*.html"
|
|
includeEmptyDirs = false
|
|
into target
|
|
}
|
|
}
|
|
}
|
|
compileJava.dependsOn tasks.generateApiDocs
|
|
|
|
dependencies {
|
|
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310'
|
|
|
|
implementation group: 'io.swagger', name: 'swagger-annotations', version: '1.6.2'
|
|
|
|
implementation group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
|
|
implementation group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.1.1'
|
|
implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
|
|
|
|
implementation group: 'org.openapitools', name: 'jackson-databind-nullable', version: '0.2.1'
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs "$buildDir/generated/api/server/src/gen/java", "$buildDir/generated/api/client/src/main/java", "$projectDir/src/main/java"
|
|
}
|
|
resources {
|
|
srcDir "$projectDir/src/main/openapi/"
|
|
}
|
|
}
|
|
}
|
|
|