From f57f1e494de85b6c469bf7ac1df5817d96fa023b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 23 Jan 2024 09:29:32 +0100 Subject: [PATCH] [jOOQ/jOOQ#16133] jOOQ-codegen-gradle doesn't consider basedir property for its OutputDirectory --- .../jooq/codegen/gradle/NamedConfiguration.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java index f395de57cf..c4cd382f97 100644 --- a/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java +++ b/jOOQ-codegen-gradle/src/main/java/org/jooq/codegen/gradle/NamedConfiguration.java @@ -56,6 +56,8 @@ import javax.inject.Inject; import groovy.lang.*; import org.codehaus.groovy.runtime.*; +import java.io.File; + /** * A wrapper for a name, configuration pair. */ @@ -117,16 +119,21 @@ public class NamedConfiguration { action.execute(c); configuration0(c); - if (configuration.getBasedir() == null) - configuration.setBasedir(layout.getProjectDirectory().getAsFile().getAbsolutePath()); - // [#15944] Override default target directory Target target = configuration.getGenerator().getTarget(); if (defaultTarget()) - configuration.getGenerator().getTarget().setDirectory("build/generated-sources/jooq"); + target.setDirectory("build/generated-sources/jooq"); - outputDirectory.value(layout.getProjectDirectory().dir(target.getDirectory())); + String directory = target.getDirectory(); + + // [#16133] Make sure the CodegenTask's OutputDirectory takes into account any basedir config + if (configuration.getBasedir() == null) + configuration.setBasedir(layout.getProjectDirectory().getAsFile().getAbsolutePath()); + else if (!new File(directory).isAbsolute()) + directory = new File(configuration.getBasedir(), directory).getAbsolutePath(); + + outputDirectory.value(layout.getProjectDirectory().dir(directory)); outputDirectorySet = true; }