datahub/metadata-models/build.gradle
2023-10-25 09:54:55 -05:00

86 lines
2.7 KiB
Groovy

import io.datahubproject.GenerateJsonSchemaTask
apply plugin: 'java-library'
apply plugin: 'pegasus'
apply plugin: 'org.hidetake.swagger.generator'
tasks.withType(JavaCompile).configureEach {
javaCompiler = javaToolchains.compilerFor {
languageVersion = JavaLanguageVersion.of(8)
}
}
tasks.withType(Test).configureEach {
javaLauncher = javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(8)
}
}
dependencies {
api spec.product.pegasus.data
constraints {
implementation('org.apache.commons:commons-text:1.10.0') {
because 'Vulnerability Issue'
}
}
api project(':li-utils')
api project(path: ':li-utils', configuration: "dataTemplate")
dataModel project(':li-utils')
compileOnly externalDependency.lombok
annotationProcessor externalDependency.lombok
compileOnly externalDependency.swaggerAnnotations
compileOnly externalDependency.springBootStarterValidation
compileOnly externalDependency.jacksonCore
compileOnly externalDependency.jacksonDataBind
swaggerCodegen externalDependency.swaggerCli
testImplementation externalDependency.guava
testImplementation externalDependency.testngJava8
}
sourceSets {
main {
java {
srcDirs = ["$buildDir/openapi/generated/src/main/java"]
}
}
}
mainAvroSchemaJar.dependsOn generateAvroSchema
pegasus.main.generationModes = [PegasusGenerationMode.PEGASUS, PegasusGenerationMode.AVRO]
tasks.register('generateJsonSchema', GenerateJsonSchemaTask) {
it.setInputDirectory("$projectDir/src/mainGeneratedAvroSchema")
it.setOutputDirectory("$projectDir/src/generatedJsonSchema")
it.setEntityRegistryYaml("${project(':metadata-models').projectDir}/src/main/resources/entity-registry.yml")
dependsOn generateAvroSchema
}
// https://github.com/int128/gradle-swagger-generator-plugin#task-type-generateswaggercode
task openApiGenerate(type: GenerateSwaggerCode, dependsOn: 'generateJsonSchema') {
inputFile = file("$projectDir/src/generatedJsonSchema/combined/open-api.yaml")
outputDir = file("$buildDir/openapi/generated")
language = "spring"
components = ["models"]
templateDir = file("$projectDir/src/main/resources/JavaSpring")
additionalProperties = [
'group-id' : "io.datahubproject",
'dateLibrary' : "java8",
'java11' : "true",
'modelPropertyNaming': "original",
'modelPackage' : "io.datahubproject.openapi.generated"
]
}
tasks.getByName("compileJava").dependsOn(openApiGenerate)
checkstyleMain.exclude '**/generated/**'
task cleanExtraDirs {
delete "$projectDir/src/generatedJsonSchema"
}
clean.finalizedBy(cleanExtraDirs)
checkstyleMain.exclude '**/generated/**'