1
0
mirror of synced 2026-01-07 09:05:45 -05:00
Files
airbyte/airbyte-api/build.gradle
2021-07-28 08:40:26 -07:00

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/"
}
}
}