I'm trying to use the Open API 3 generator plugin for gradle. It is enough to add the lines
plugins {
id "org.openapi.generator" version "5.0.1"
}
in the project's build.gradle
to get the error:
com.google.common.base.Suppliers$NonSerializableMemoizingSupplier cannot be cast to java.util.function.Supplier
I'm using gradle 6.4
This is how I have implemented it now. Please notice the line:
classpath("com.google.guava:guava:30.1-jre")
that is the fix of the issue.
In the project build.gradle add:
buildscript {
dependecies {
classpath("com.google.guava:guava:30.1-jre")
}
plugins {
id "org.openapi.generator" version "5.0.1"
}
task generateCode(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
generatorName = "kotlin"
inputSpec = sampleApiSpec
outputDir = "$projectDir/generatedapi"
groupId = "$project.group"
id = "$project.name"
version = "$project.version"
apiPackage = "com.package.name.generatedapi.apis"
invokerPackage = "com.package.name.generatedapi.apis.invoker"
modelPackage = "com.package.name.generatedapi.apis.model"
enablePostProcessFile = true
skipOverwrite = false
modelNamePrefix = "Raw"
configOptions = [
java8 : "true",
dateLibrary : "java8",
serializationLibrary: "moshi",
library : "resttemplate",
useBeanValidation : "true",
enableBuilderSupport: "true",
]
}
android.sourceSets.main.java.srcDirs += ['generatedapi']
Then you can run:
./gradlew generateCode
or you can set generateCode as a dependency for your build task
Please check: https://github.com/GoogleCloudPlatform/artifact-registry-maven-tools/issues/27
EDIT Even better:
buildscript {
dependecies {
classpath('org.openapitools:openapi-generator-gradle-plugin:5.0.1') {
exclude group: 'com.google.guava'
}
}
configurations {
compile.exclude module: 'guava-jdk5'
}
So no need to overwrite the guava lib just exclude the one imported by the generator