[gradle plugin] Support Gradle 4.10 (#1011)

* Support Gradle 4.10

Gradle 4.10 is bundled with Kotlin 1.60 and Kotlin DSL 1.0-rc1. The new
Kotlin DSL isn't binary compatible with the `tasks` registration used in
this plugin.

Updating to Kotlin DSL 1.0-rc1 with no other changes would require users
to update to Gradle 4.10.

As a workaround, I've modified the tasks registration being done in
OpenApiGeneratorPlugin.kt, so rather than using the Kotlin DSL's invoke,
it creates tasks manually against the TasksContainer. This works locally
with Gradle 4.7+ for all scenarios in the sample (samples/local-spec).
There may be edge cases that I'm unaware of, and we may want to consider
defining the minimum supported Gradle version of 4.10 in the next major
version of openapi-generator-gradle-plugin if we experience those cases.

* Uncomment snapshots repo (commented it during local testing)

* update pom.xml for exec gradle plugin
This commit is contained in:
Jim Schubert 2018-09-12 19:19:45 -04:00 committed by GitHub
parent f29ba97e8b
commit 131cf94fe4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 11 deletions

View File

@ -1,5 +1,5 @@
buildscript { buildscript {
ext.kotlin_version = '1.2.41' ext.kotlin_version = '1.2.60'
repositories { repositories {
mavenCentral() mavenCentral()
maven { maven {
@ -14,7 +14,7 @@ buildscript {
} }
dependencies { dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "gradle.plugin.org.gradle.kotlin:gradle-kotlin-dsl-plugins:0.17.5" classpath "gradle.plugin.org.gradle.kotlin:gradle-kotlin-dsl-plugins:1.0-rc-3"
} }
} }

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-rc-1-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@ -54,7 +54,7 @@
<artifactId>gradle-maven-plugin</artifactId> <artifactId>gradle-maven-plugin</artifactId>
<version>1.0.8</version> <version>1.0.8</version>
<configuration> <configuration>
<gradleVersion>4.7</gradleVersion> <gradleVersion>4.10-rc-1</gradleVersion>
<args> <args>
<arg>-P openApiGeneratorVersion=${project.version}</arg> <arg>-P openApiGeneratorVersion=${project.version}</arg>
</args> </args>

View File

@ -17,5 +17,5 @@ gradle generateGoWithInvalidSpec
The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example: The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example:
```bash ```bash
gradle -PopenApiGeneratorVersion=3.2.3 openApiValidate gradle -PopenApiGeneratorVersion=3.3.0 openApiValidate
``` ```

View File

@ -18,7 +18,6 @@ package org.openapitools.generator.gradle.plugin
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.invoke
import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorGenerateExtension import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorGenerateExtension
import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorMetaExtension import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorMetaExtension
import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorValidateExtension import org.openapitools.generator.gradle.plugin.extensions.OpenApiGeneratorValidateExtension
@ -56,12 +55,13 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
generate.outputDir.set("$buildDir/generate-resources/main") generate.outputDir.set("$buildDir/generate-resources/main")
tasks { tasks.apply {
"openApiGenerators"(GeneratorsTask::class) { create("openApiGenerators", GeneratorsTask::class.java) {
group = pluginGroup group = pluginGroup
description = "Lists generators available via Open API Generators." description = "Lists generators available via Open API Generators."
} }
"openApiMeta"(MetaTask::class) {
create("openApiMeta", MetaTask::class.java) {
group = pluginGroup group = pluginGroup
description = "Generates a new generator to be consumed via Open API Generator." description = "Generates a new generator to be consumed via Open API Generator."
@ -69,13 +69,15 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
packageName.set(meta.packageName) packageName.set(meta.packageName)
outputFolder.set(meta.outputFolder) outputFolder.set(meta.outputFolder)
} }
"openApiValidate"(ValidateTask::class) {
create("openApiValidate", ValidateTask::class.java) {
group = pluginGroup group = pluginGroup
description = "Validates an Open API 2.0 or 3.x specification document." description = "Validates an Open API 2.0 or 3.x specification document."
inputSpec.set(validate.inputSpec) inputSpec.set(validate.inputSpec)
} }
"openApiGenerate"(GenerateTask::class) {
create("openApiGenerate", GenerateTask::class.java) {
group = pluginGroup group = pluginGroup
description = "Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents." description = "Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents."