Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 24 additions & 11 deletions api/iceberg-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* under the License.
*/

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

plugins {
alias(libs.plugins.openapi.generator)
id("polaris-client")
Expand Down Expand Up @@ -49,14 +51,25 @@ dependencies {
compileOnly(libs.microprofile.fault.tolerance.api)
}

val rootDir = rootProject.layout.projectDirectory
val specsDir = rootDir.dir("spec")
val templatesDir = rootDir.dir("server-templates")
// Use a different directory than 'generated/', because OpenAPI generator's `GenerateTask` adds the
// whole directory to its task output, but 'generated/' is not exclusive to that task and in turn
// breaks Gradle's caching.
val generatedDir = project.layout.buildDirectory.dir("generated-openapi")
val generatedOpenApiSrcDir = project.layout.buildDirectory.dir("generated-openapi/src/main/java")

openApiGenerate {
inputSpec = "$rootDir/spec/polaris-catalog-service.yaml"
// The OpenAPI generator does NOT resolve relative paths correctly against the Gradle project
// directory
inputSpec = specsDir.file("polaris-catalog-service.yaml").asFile.absolutePath
generatorName = "jaxrs-resteasy"
outputDir = "$projectDir/build/generated"
outputDir = generatedDir.get().asFile.absolutePath
apiPackage = "org.apache.polaris.service.catalog.api"
ignoreFileOverride = "$rootDir/.openapi-generator-ignore"
ignoreFileOverride = rootDir.file(".openapi-generator-ignore").asFile.absolutePath
removeOperationIdPrefix = true
templateDir = "$rootDir/server-templates"
templateDir = templatesDir.asFile.absolutePath
globalProperties.put("apis", "CatalogApi,ConfigurationApi,OAuth2Api")
globalProperties.put("models", "false")
globalProperties.put("apiDocs", "false")
Expand Down Expand Up @@ -109,16 +122,16 @@ openApiGenerate {
)
}

listOf("sourcesJar", "compileJava").forEach { task ->
listOf("sourcesJar", "compileJava", "processResources").forEach { task ->
tasks.named(task) { dependsOn("openApiGenerate") }
}

sourceSets {
main { java { srcDir(project.layout.buildDirectory.dir("generated/src/main/java")) } }
sourceSets { main { java { srcDir(generatedOpenApiSrcDir) } } }

tasks.named<GenerateTask>("openApiGenerate") {
inputs.dir(templatesDir)
inputs.dir(specsDir)
actions.addFirst { delete { delete(generatedDir) } }
}

tasks.named("javadoc") { dependsOn("jandex") }

tasks.named("processResources") { dependsOn("openApiGenerate") }

tasks.named("openApiGenerate") { outputs.cacheIf { false } }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the past, this was needed to make CI pass after making any spec changes. Are you able to confirm that this isn't the case now?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's mentioned in the first bullet point of the PR description.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact it's not -- or at least it was not obvious to me that these two things were one and the same. Thanks for confirming!

33 changes: 24 additions & 9 deletions api/management-model/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* under the License.
*/

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

plugins {
alias(libs.plugins.openapi.generator)
id("polaris-client")
Expand All @@ -36,14 +38,25 @@ dependencies {
testImplementation("com.fasterxml.jackson.core:jackson-databind")
}

val rootDir = rootProject.layout.projectDirectory
val specsDir = rootDir.dir("spec")
val templatesDir = rootDir.dir("server-templates")
// Use a different directory than 'generated/', because OpenAPI generator's `GenerateTask` adds the
// whole directory to its task output, but 'generated/' is not exclusive to that task and in turn
// breaks Gradle's caching.
val generatedDir = project.layout.buildDirectory.dir("generated-openapi")
val generatedOpenApiSrcDir = project.layout.buildDirectory.dir("generated-openapi/src/main/java")

openApiGenerate {
inputSpec = "$rootDir/spec/polaris-management-service.yml"
// The OpenAPI generator does NOT resolve relative paths correctly against the Gradle project
// directory
inputSpec = specsDir.file("polaris-management-service.yml").asFile.absolutePath
generatorName = "jaxrs-resteasy"
outputDir = "$projectDir/build/generated"
outputDir = generatedDir.get().asFile.absolutePath
modelPackage = "org.apache.polaris.core.admin.model"
ignoreFileOverride = "$rootDir/.openapi-generator-ignore"
ignoreFileOverride = rootDir.file(".openapi-generator-ignore").asFile.absolutePath
removeOperationIdPrefix = true
templateDir = "$rootDir/server-templates"
templateDir = templatesDir.asFile.absolutePath
globalProperties.put("apis", "false")
globalProperties.put("models", "")
globalProperties.put("apiDocs", "false")
Expand All @@ -64,14 +77,16 @@ openApiGenerate {
serverVariables = mapOf("basePath" to "api/v1")
}

listOf("sourcesJar", "compileJava").forEach { task ->
listOf("sourcesJar", "compileJava", "processResources").forEach { task ->
tasks.named(task) { dependsOn("openApiGenerate") }
}

sourceSets {
main { java { srcDir(project.layout.buildDirectory.dir("generated/src/main/java")) } }
sourceSets { main { java { srcDir(generatedOpenApiSrcDir) } } }

tasks.named<GenerateTask>("openApiGenerate") {
inputs.dir(templatesDir)
inputs.dir(specsDir)
actions.addFirst { delete { delete(generatedDir) } }
}

tasks.named("javadoc") { dependsOn("jandex") }

tasks.named("processResources") { dependsOn("openApiGenerate") }
33 changes: 24 additions & 9 deletions api/management-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* under the License.
*/

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

plugins {
alias(libs.plugins.openapi.generator)
id("polaris-client")
Expand Down Expand Up @@ -45,15 +47,26 @@ dependencies {
implementation(libs.slf4j.api)
}

val rootDir = rootProject.layout.projectDirectory
val specsDir = rootDir.dir("spec")
val templatesDir = rootDir.dir("server-templates")
// Use a different directory than 'generated/', because OpenAPI generator's `GenerateTask` adds the
// whole directory to its task output, but 'generated/' is not exclusive to that task and in turn
// breaks Gradle's caching.
val generatedDir = project.layout.buildDirectory.dir("generated-openapi")
val generatedOpenApiSrcDir = project.layout.buildDirectory.dir("generated-openapi/src/main/java")

openApiGenerate {
inputSpec = "$rootDir/spec/polaris-management-service.yml"
// The OpenAPI generator does NOT resolve relative paths correctly against the Gradle project
// directory
inputSpec = specsDir.file("polaris-management-service.yml").asFile.absolutePath
generatorName = "jaxrs-resteasy"
outputDir = "$projectDir/build/generated"
outputDir = generatedDir.get().asFile.absolutePath
apiPackage = "org.apache.polaris.service.admin.api"
modelPackage = "org.apache.polaris.core.admin.model"
ignoreFileOverride = "$rootDir/.openapi-generator-ignore"
ignoreFileOverride = rootDir.file(".openapi-generator-ignore").asFile.absolutePath
removeOperationIdPrefix = true
templateDir = "$rootDir/server-templates"
templateDir = templatesDir.asFile.absolutePath
globalProperties.put("apis", "")
globalProperties.put("models", "false")
globalProperties.put("apiDocs", "false")
Expand All @@ -70,14 +83,16 @@ openApiGenerate {
serverVariables.put("basePath", "api/v1")
}

listOf("sourcesJar", "compileJava").forEach { task ->
listOf("sourcesJar", "compileJava", "processResources").forEach { task ->
tasks.named(task) { dependsOn("openApiGenerate") }
}

sourceSets {
main { java { srcDir(project.layout.buildDirectory.dir("generated/src/main/java")) } }
sourceSets { main { java { srcDir(generatedOpenApiSrcDir) } } }

tasks.named<GenerateTask>("openApiGenerate") {
inputs.dir(templatesDir)
inputs.dir(specsDir)
actions.addFirst { delete { delete(generatedDir) } }
}

tasks.named("javadoc") { dependsOn("jandex") }

tasks.named("processResources") { dependsOn("openApiGenerate") }
35 changes: 24 additions & 11 deletions api/polaris-catalog-service/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
* under the License.
*/

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask

plugins {
alias(libs.plugins.openapi.generator)
id("polaris-client")
Expand Down Expand Up @@ -75,15 +77,26 @@ dependencies {
compileOnly(libs.microprofile.fault.tolerance.api)
}

val rootDir = rootProject.layout.projectDirectory
val specsDir = rootDir.dir("spec")
val templatesDir = rootDir.dir("server-templates")
// Use a different directory than 'generated/', because OpenAPI generator's `GenerateTask` adds the
// whole directory to its task output, but 'generated/' is not exclusive to that task and in turn
// breaks Gradle's caching.
val generatedDir = project.layout.buildDirectory.dir("generated-openapi")
val generatedOpenApiSrcDir = project.layout.buildDirectory.dir("generated-openapi/src/main/java")

openApiGenerate {
inputSpec = "$rootDir/spec/polaris-catalog-service.yaml"
// The OpenAPI generator does NOT resolve relative paths correctly against the Gradle project
// directory
inputSpec = specsDir.file("polaris-catalog-service.yaml").asFile.absolutePath
generatorName = "jaxrs-resteasy"
outputDir = "$projectDir/build/generated"
outputDir = generatedDir.get().asFile.absolutePath
apiPackage = "org.apache.polaris.service.catalog.api"
modelPackage = "org.apache.polaris.service.types"
ignoreFileOverride = "$rootDir/.openapi-generator-ignore"
ignoreFileOverride = rootDir.file(".openapi-generator-ignore").asFile.absolutePath
removeOperationIdPrefix = true
templateDir = "$rootDir/server-templates"
templateDir = templatesDir.asFile.absolutePath
globalProperties.put("apis", "GenericTableApi,PolicyApi")
globalProperties.put("models", models)
globalProperties.put("apiDocs", "false")
Expand Down Expand Up @@ -112,16 +125,16 @@ openApiGenerate {
)
}

listOf("sourcesJar", "compileJava").forEach { task ->
listOf("sourcesJar", "compileJava", "processResources").forEach { task ->
tasks.named(task) { dependsOn("openApiGenerate") }
}

sourceSets {
main { java { srcDir(project.layout.buildDirectory.dir("generated/src/main/java")) } }
sourceSets { main { java { srcDir(generatedOpenApiSrcDir) } } }

tasks.named<GenerateTask>("openApiGenerate") {
inputs.dir(templatesDir)
inputs.dir(specsDir)
actions.addFirst { delete { delete(generatedDir) } }
}

tasks.named("javadoc") { dependsOn("jandex") }

tasks.named("processResources") { dependsOn("openApiGenerate") }

tasks.named("openApiGenerate") { outputs.cacheIf { false } }
2 changes: 1 addition & 1 deletion build-logic/src/main/kotlin/polaris-java.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ tasks.withType(JavaCompile::class.java).configureEach {
options.errorprone.disableAllWarnings = true
options.errorprone.disableWarningsInGeneratedCode = true
options.errorprone.excludedPaths =
".*/${project.layout.buildDirectory.get().asFile.relativeTo(projectDir)}/generated/.*"
".*/${project.layout.buildDirectory.get().asFile.relativeTo(projectDir)}/generated(-openapi)?/.*"
val errorproneRules = rootProject.projectDir.resolve("codestyle/errorprone-rules.properties")
inputs.file(errorproneRules).withPathSensitivity(PathSensitivity.RELATIVE)
options.errorprone.checks.putAll(provider { memoizedErrorproneRules(errorproneRules) })
Expand Down
Loading