pgjdbc/pgjdbc GitHub issues and pull requests (mirror)  
help / color / mirror / Atom feed
From: davecramer (@davecramer) <[email protected]>
To: pgjdbc/pgjdbc <[email protected]>
Subject: [pgjdbc/pgjdbc] PR #4143: Simplify build
Date: Wed, 03 Jun 2026 18:51:14 +0000
Message-ID: <[email protected]> (raw)

refactor: consolidate build-logic into a single conventions module
    
    Merge 8 build-logic sub-modules (basics, jvm, java-comment-preprocessor,
    publishing, root-build, verification) plus build-logic-commons into one
    conventions module. This eliminates redundant Kotlin compilation passes
    during Gradle configuration.
    
    - Reduces build-logic tasks from 92 to 18 for :postgresql:compileJava
    - Cold build time drops from ~31s to ~15s (52% faster)
    - Delete 6 plugins: toolchains (empty), java-library (wrapper),
      kotlin (unused), repositories/reproducible-builds/publish-to-tmp-maven-repo
      (inlined)
    - All verification tools, publishing, and test config preserved
refactor: drop com.github.vlsi gradle-extensions/crlf helpers from conventions
    
    Replace `tasks.configureEach<T>` with stdlib `tasks.withType<T>().configureEach`
    and swap `props.string(name)` for `project.findProperty(name) as? String` so
    the conventions plugin no longer depends on `com.github.vlsi.gradle-extensions`
    or `com.github.vlsi.crlf`. 

diff --git a/benchmarks/build.gradle.kts b/benchmarks/build.gradle.kts
index 504838a235..bb9a0e0363 100644
--- a/benchmarks/build.gradle.kts
+++ b/benchmarks/build.gradle.kts
@@ -3,7 +3,8 @@
  * See the LICENSE file in the project root for more information.
  */
 plugins {
-    id("build-logic.java-library")
+    id("build-logic.java")
+    id("java-library")
     id("me.champeau.jmh")
 }
 
diff --git a/build-logic-commons/.gitignore b/build-logic-commons/.gitignore
deleted file mode 100644
index de8b137467..0000000000
--- a/build-logic-commons/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*/build/
diff --git a/build-logic-commons/gradle-plugin/build.gradle.kts b/build-logic-commons/gradle-plugin/build.gradle.kts
deleted file mode 100644
index d23bc57ca7..0000000000
--- a/build-logic-commons/gradle-plugin/build.gradle.kts
+++ /dev/null
@@ -1,27 +0,0 @@
-import org.gradle.kotlin.dsl.support.expectedKotlinDslPluginsVersion
-
-plugins {
-    `kotlin-dsl`
-}
-
-group = "org.postgresql.build-logic"
-
-dependencies {
-    // We use precompiled script plugins (== plugins written as src/kotlin/build-logic.*.gradle.kts files,
-    // and we need to declare dependency on org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin
-    // to make it work.
-    // See https://github.com/gradle/gradle/issues/17016 regarding expectedKotlinDslPluginsVersion
-    implementation("org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:$expectedKotlinDslPluginsVersion")
-}
-
-// We need to figure out a version that is supported by the current JVM, and by the Kotlin Gradle plugin
-// So we settle on 21, 17, or 11 if the current JVM supports it
-listOf(21, 17, 11)
-    .firstOrNull { JavaVersion.toVersion(it) <= JavaVersion.current() }
-    ?.let { buildScriptJvmTarget ->
-        java {
-            toolchain {
-                languageVersion.set(JavaLanguageVersion.of(buildScriptJvmTarget))
-            }
-        }
-    }
diff --git a/build-logic-commons/gradle-plugin/src/main/kotlin/build-logic.kotlin-dsl-gradle-plugin.gradle.kts b/build-logic-commons/gradle-plugin/src/main/kotlin/build-logic.kotlin-dsl-gradle-plugin.gradle.kts
deleted file mode 100644
index 24ee745d27..0000000000
--- a/build-logic-commons/gradle-plugin/src/main/kotlin/build-logic.kotlin-dsl-gradle-plugin.gradle.kts
+++ /dev/null
@@ -1,21 +0,0 @@
-plugins {
-    id("java-library")
-    id("org.gradle.kotlin.kotlin-dsl") // this is 'kotlin-dsl' without version
-}
-
-tasks.validatePlugins {
-    failOnWarning.set(true)
-    enableStricterValidation.set(true)
-}
-
-// We need to figure out a version that is supported by the current JVM, and by the Kotlin Gradle plugin
-// So we settle on 21, 17, or 11 if the current JVM supports it
-listOf(21, 17, 11)
-    .firstOrNull { JavaVersion.toVersion(it) <= JavaVersion.current() }
-    ?.let { buildScriptJvmTarget ->
-        java {
-            toolchain {
-                languageVersion.set(JavaLanguageVersion.of(buildScriptJvmTarget))
-            }
-        }
-    }
diff --git a/build-logic-commons/settings.gradle.kts b/build-logic-commons/settings.gradle.kts
deleted file mode 100644
index e32971bde7..0000000000
--- a/build-logic-commons/settings.gradle.kts
+++ /dev/null
@@ -1,9 +0,0 @@
-dependencyResolutionManagement {
-    repositories {
-        gradlePluginPortal()
-    }
-}
-
-rootProject.name = "build-logic-commons"
-
-include("gradle-plugin")
diff --git a/build-logic/basics/build.gradle.kts b/build-logic/basics/build.gradle.kts
deleted file mode 100644
index 16006a2903..0000000000
--- a/build-logic/basics/build.gradle.kts
+++ /dev/null
@@ -1,7 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    implementation(project(":build-parameters"))
-}
diff --git a/build-logic/basics/src/main/kotlin/build-logic.repositories.gradle.kts b/build-logic/basics/src/main/kotlin/build-logic.repositories.gradle.kts
deleted file mode 100644
index 7807dac9bd..0000000000
--- a/build-logic/basics/src/main/kotlin/build-logic.repositories.gradle.kts
+++ /dev/null
@@ -1,20 +0,0 @@
-plugins {
-    id("build-logic.build-params")
-}
-
-repositories {
-    if (buildParameters.enableMavenLocal) {
-        mavenLocal()
-    }
-    mavenCentral {
-        mavenContent {
-            releasesOnly()
-        }
-    }
-    maven {
-        url = uri("https://oss.sonatype.org/content/repositories/snapshots/";)
-        mavenContent {
-            snapshotsOnly()
-        }
-    }
-}
diff --git a/build-logic/basics/src/main/kotlin/build-logic.reproducible-builds.gradle.kts b/build-logic/basics/src/main/kotlin/build-logic.reproducible-builds.gradle.kts
deleted file mode 100644
index f46c912ddb..0000000000
--- a/build-logic/basics/src/main/kotlin/build-logic.reproducible-builds.gradle.kts
+++ /dev/null
@@ -1,34 +0,0 @@
-tasks.withType<AbstractArchiveTask>().configureEach {
-    // Ensure builds are reproducible
-    isPreserveFileTimestamps = false
-    isReproducibleFileOrder = true
-    dirPermissions {
-        user {
-            read = true
-            write = true
-            execute = true
-        }
-        group {
-            read = true
-            write = true
-            execute = true
-        }
-        other {
-            read = true
-            execute = true
-        }
-    }
-    filePermissions {
-        user {
-            read = true
-            write = true
-        }
-        group {
-            read = true
-            write = true
-        }
-        other {
-            read = true
-        }
-    }
-}
diff --git a/build-logic/basics/src/main/kotlin/build-logic.toolchains.gradle.kts b/build-logic/basics/src/main/kotlin/build-logic.toolchains.gradle.kts
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/build-logic/build-parameters/build.gradle.kts b/build-logic/build-parameters/build.gradle.kts
index 05020324e6..ac0d856c95 100644
--- a/build-logic/build-parameters/build.gradle.kts
+++ b/build-logic/build-parameters/build.gradle.kts
@@ -1,7 +1,7 @@
 plugins {
     id("org.gradlex.build-parameters") version "1.4.5"
     id("com.github.vlsi.gradle-extensions") version "3.0.2"
-    id("build-logic.kotlin-dsl-gradle-plugin")
+    id("java-library")
 }
 
 buildParameters {
diff --git a/build-logic/conventions/build.gradle.kts b/build-logic/conventions/build.gradle.kts
new file mode 100644
index 0000000000..d66b1b7b34
--- /dev/null
+++ b/build-logic/conventions/build.gradle.kts
@@ -0,0 +1,49 @@
+plugins {
+    id("org.gradle.kotlin.kotlin-dsl")
+}
+
+group = "org.postgresql.build-logic"
+
+dependencies {
+    // Build parameters
+    implementation(project(":build-parameters"))
+
+    // Basics / JVM
+    implementation("com.github.vlsi.crlf:com.github.vlsi.crlf.gradle.plugin:3.0.2")
+    implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:3.0.2")
+    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin")
+    implementation("com.github.autostyle:com.github.autostyle.gradle.plugin:4.0")
+    implementation("com.github.vlsi.jandex:com.github.vlsi.jandex.gradle.plugin:3.0.2")
+
+    // Java comment preprocessor
+    implementation("com.igormaznitsa:jcp:7.3.0")
+
+    // Publishing
+    implementation("com.gradleup.nmcp:com.gradleup.nmcp.gradle.plugin:1.5.0")
+    implementation("com.gradleup.nmcp.aggregation:com.gradleup.nmcp.aggregation.gradle.plugin:1.5.0")
+    implementation("com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:9.4.1")
+
+    // Verification
+    // See https://github.com/gradle/gradle/issues/15383#issuecomment-779893192
+    implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
+    implementation("de.thetaphi.forbiddenapis:de.thetaphi.forbiddenapis.gradle.plugin:3.10")
+    implementation("net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:5.1.0")
+    implementation("org.checkerframework:org.checkerframework.gradle.plugin:1.0.2")
+    implementation("org.openrewrite.rewrite:org.openrewrite.rewrite.gradle.plugin:7.33.0")
+}
+
+tasks.validatePlugins {
+    failOnWarning.set(true)
+    enableStricterValidation.set(true)
+}
+
+// Use JDK 21, 17, or 11 for compiling build logic
+listOf(21, 17, 11)
+    .firstOrNull { JavaVersion.toVersion(it) <= JavaVersion.current() }
+    ?.let { buildScriptJvmTarget ->
+        java {
+            toolchain {
+                languageVersion.set(JavaLanguageVersion.of(buildScriptJvmTarget))
+            }
+        }
+    }
diff --git a/build-logic/basics/src/main/kotlin/ToolchainProperties.kt b/build-logic/conventions/src/main/kotlin/ToolchainProperties.kt
similarity index 100%
rename from build-logic/basics/src/main/kotlin/ToolchainProperties.kt
rename to build-logic/conventions/src/main/kotlin/ToolchainProperties.kt
diff --git a/build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.autostyle.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.autostyle.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.autostyle.gradle.kts
diff --git a/build-logic/verification/src/main/kotlin/build-logic.checkerframework.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.checkerframework.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.checkerframework.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.checkerframework.gradle.kts
diff --git a/build-logic/verification/src/main/kotlin/build-logic.checkstyle.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.checkstyle.gradle.kts
similarity index 96%
rename from build-logic/verification/src/main/kotlin/build-logic.checkstyle.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.checkstyle.gradle.kts
index 9b5372c692..0371318e8e 100644
--- a/build-logic/verification/src/main/kotlin/build-logic.checkstyle.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.checkstyle.gradle.kts
@@ -2,7 +2,6 @@ import com.github.vlsi.gradle.dsl.configureEach
 
 plugins {
     id("checkstyle")
-    id("build-logic.toolchains")
     id("build-logic.build-params")
 }
 
diff --git a/build-logic/verification/src/main/kotlin/build-logic.errorprone.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.errorprone.gradle.kts
similarity index 98%
rename from build-logic/verification/src/main/kotlin/build-logic.errorprone.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.errorprone.gradle.kts
index 7b9875fb6e..217a214c99 100644
--- a/build-logic/verification/src/main/kotlin/build-logic.errorprone.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.errorprone.gradle.kts
@@ -5,7 +5,6 @@ import org.gradle.kotlin.dsl.dependencies
 
 plugins {
     id("java")
-    id("build-logic.repositories")
     id("build-logic.build-params")
 }
 
diff --git a/build-logic/verification/src/main/kotlin/build-logic.forbidden-apis.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.forbidden-apis.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.forbidden-apis.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.forbidden-apis.gradle.kts
diff --git a/build-logic/verification/src/main/kotlin/build-logic.jacoco.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.jacoco.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.jacoco.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.jacoco.gradle.kts
diff --git a/build-logic/java-comment-preprocessor/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts
similarity index 69%
rename from build-logic/java-comment-preprocessor/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts
index d63eaf22be..8ad02844ee 100644
--- a/build-logic/java-comment-preprocessor/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.java-comment-preprocessor.gradle.kts
@@ -1,13 +1,6 @@
-import com.github.vlsi.gradle.dsl.configureEach
-import com.github.vlsi.gradle.properties.dsl.props
-
-plugins {
-    id("com.github.vlsi.gradle-extensions")
-}
-
-tasks.configureEach<buildlogic.JavaCommentPreprocessorTask> {
+tasks.withType<buildlogic.JavaCommentPreprocessorTask>().configureEach {
     variables.apply {
-        val jdbcSpec = props.string("jdbc.specification.version")
+        val jdbcSpec = (project.findProperty("jdbc.specification.version") as? String) ?: ""
         put("mvn.project.property.postgresql.jdbc.spec", "JDBC$jdbcSpec")
         put("jdbc.specification.version", jdbcSpec)
     }
diff --git a/build-logic/publishing/src/main/kotlin/build-logic.java-published-library.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.java-published-library.gradle.kts
similarity index 74%
rename from build-logic/publishing/src/main/kotlin/build-logic.java-published-library.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.java-published-library.gradle.kts
index 0d6e4f7036..00150cca89 100644
--- a/build-logic/publishing/src/main/kotlin/build-logic.java-published-library.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.java-published-library.gradle.kts
@@ -2,11 +2,18 @@ import com.github.vlsi.gradle.publishing.dsl.versionFromResolution
 
 plugins {
     id("build-logic.build-params")
-    id("build-logic.java-library")
-    id("build-logic.reproducible-builds")
+    id("build-logic.java")
+    id("java-library")
     id("build-logic.publish-to-central")
 }
 
+tasks.withType<AbstractArchiveTask>().configureEach {
+    isPreserveFileTimestamps = false
+    isReproducibleFileOrder = true
+    dirPermissions { unix("755") }
+    filePermissions { unix("644") }
+}
+
 java {
     withSourcesJar()
     if (!buildParameters.skipJavadoc) {
diff --git a/build-logic/publishing/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts
similarity index 84%
rename from build-logic/publishing/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts
index a633a3a4fb..9fb4aff4ab 100644
--- a/build-logic/publishing/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.java-shaded-published-library.gradle.kts
@@ -2,12 +2,19 @@ import com.github.vlsi.gradle.publishing.dsl.versionFromResolution
 
 plugins {
     id("build-logic.build-params")
-    id("build-logic.java-library")
-    id("build-logic.reproducible-builds")
+    id("build-logic.java")
+    id("java-library")
     id("build-logic.publish-to-central")
     id("com.gradleup.shadow")
 }
 
+tasks.withType<AbstractArchiveTask>().configureEach {
+    isPreserveFileTimestamps = false
+    isReproducibleFileOrder = true
+    dirPermissions { unix("755") }
+    filePermissions { unix("644") }
+}
+
 java {
     withSourcesJar()
     if (!buildParameters.skipJavadoc) {
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.java.gradle.kts
similarity index 86%
rename from build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.java.gradle.kts
index 044a724356..c679fac3b8 100644
--- a/build-logic/jvm/src/main/kotlin/build-logic.java.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.java.gradle.kts
@@ -1,28 +1,40 @@
 import com.github.vlsi.gradle.crlf.CrLfSpec
 import com.github.vlsi.gradle.crlf.LineEndings
-import com.github.vlsi.gradle.dsl.configureEach
-import com.github.vlsi.gradle.properties.dsl.props
 import java.time.LocalDate
 
 plugins {
     id("java")
     id("com.github.vlsi.crlf")
-    id("com.github.vlsi.gradle-extensions")
-    id("build-logic.repositories")
     id("build-logic.test-base")
     id("build-logic.build-params")
     id("build-logic.style")
-    id("build-logic.toolchains")
     id("com.github.vlsi.jandex")
 }
 
+repositories {
+    if (buildParameters.enableMavenLocal) {
+        mavenLocal()
+    }
+    mavenCentral {
+        mavenContent {
+            releasesOnly()
+        }
+    }
+    maven {
+        url = uri("https://oss.sonatype.org/content/repositories/snapshots/";)
+        mavenContent {
+            snapshotsOnly()
+        }
+    }
+}
+
 java {
     toolchain {
         configureToolchain(buildParameters.buildJdk)
     }
 }
 
-tasks.configureEach<JavaExec> {
+tasks.withType<JavaExec>().configureEach {
     buildParameters.testJdk?.let {
         javaLauncher.convention(javaToolchains.launcherFor(it))
     }
@@ -42,7 +54,7 @@ project.configure<com.github.vlsi.jandex.JandexExtension> {
 }
 
 if (!buildParameters.enableGradleMetadata) {
-    tasks.configureEach<GenerateModuleMetadata> {
+    tasks.withType<GenerateModuleMetadata>().configureEach {
         enabled = false
     }
 }
@@ -51,7 +63,7 @@ if (buildParameters.coverage || gradle.startParameter.taskNames.any { it.contain
     apply(plugin = "build-logic.jacoco")
 }
 
-tasks.configureEach<JavaCompile> {
+tasks.withType<JavaCompile>().configureEach {
     options.apply {
         encoding = "UTF-8"
         // Use --release=8 for Java 10+ so the generated bytecode does not include methods introduced in Java 9+
@@ -81,7 +93,7 @@ tasks.configureEach<JavaCompile> {
     }
 }
 
-tasks.configureEach<Javadoc> {
+tasks.withType<Javadoc>().configureEach {
     (options as StandardJavadocDocletOptions).apply {
         // Please refrain from using non-ASCII chars below since the options are passed as
         // javadoc.options file which is parsed with "default encoding"
@@ -121,24 +133,24 @@ tasks.configureEach<Javadoc> {
 // Add default license/notice when missing (e.g. see :src:config that overrides LICENSE)
 
 afterEvaluate {
-    tasks.configureEach<Jar> {
+    tasks.withType<Jar>().configureEach {
         CrLfSpec(LineEndings.LF).run {
             into("META-INF") {
                 filteringCharset = "UTF-8"
                 duplicatesStrategy = DuplicatesStrategy.EXCLUDE
-                from("$rootDir/LICENSE")
-                from("$rootDir/NOTICE")
+                textFrom("$rootDir/LICENSE")
+                textFrom("$rootDir/NOTICE")
             }
         }
     }
 }
 
-tasks.configureEach<Jar> {
+tasks.withType<Jar>().configureEach {
     manifest {
         attributes["Bundle-License"] = "BSD-2-Clause"
         attributes["Implementation-Title"] = "PostgreSQL JDBC Driver"
         attributes["Implementation-Version"] = project.version
-        val jdbcSpec = props.string("jdbc.specification.version")
+        val jdbcSpec = (project.findProperty("jdbc.specification.version") as? String) ?: ""
         if (jdbcSpec.isNotBlank()) {
             attributes["Specification-Vendor"] = "Oracle Corporation"
             attributes["Specification-Version"] = jdbcSpec
diff --git a/build-logic/verification/src/main/kotlin/build-logic.openrewrite.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.openrewrite.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.openrewrite.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.openrewrite.gradle.kts
diff --git a/build-logic/publishing/src/main/kotlin/build-logic.publish-to-central.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.publish-to-central.gradle.kts
similarity index 86%
rename from build-logic/publishing/src/main/kotlin/build-logic.publish-to-central.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.publish-to-central.gradle.kts
index 78fe11b5d3..3d07071b93 100644
--- a/build-logic/publishing/src/main/kotlin/build-logic.publish-to-central.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.publish-to-central.gradle.kts
@@ -11,11 +11,48 @@ plugins {
     id("maven-publish")
     id("signing")
     id("build-logic.build-params")
-    id("build-logic.publish-to-tmp-maven-repo")
     id("com.github.vlsi.gradle-extensions")
     id("com.gradleup.nmcp")
 }
 
+// Inline from build-logic.publish-to-tmp-maven-repo
+val localRepoElements by configurations.creating {
+    isCanBeConsumed = true
+    isCanBeResolved = false
+    description =
+        "Shares local maven repository directory that contains the artifacts produced by the current project"
+    attributes {
+        attribute(Category.CATEGORY_ATTRIBUTE, objects.named("maven-repository"))
+        attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
+    }
+}
+
+val localRepoDir = layout.buildDirectory.dir("local-maven-repo")
+
+publishing {
+    repositories {
+        maven {
+            name = "tmp-maven"
+            url = uri(localRepoDir)
+        }
+    }
+}
+
+localRepoElements.outgoing.artifact(localRepoDir) {
+    builtBy(tasks.named("publishAllPublicationsToTmp-mavenRepository"))
+}
+
+val cleanLocalRepository by tasks.registering(Delete::class) {
+    description = "Clears local-maven-repo so timestamp-based snapshot artifacts do not consume space"
+    delete(localRepoDir)
+}
+
+tasks.withType<PublishToMavenRepository>()
+    .matching { it.name.endsWith("PublicationToTmp-mavenRepository") }
+    .configureEach {
+        dependsOn(cleanLocalRepository)
+    }
+
 if (!buildParameters.release) {
     publishing {
         repositories {
diff --git a/build-logic/root-build/src/main/kotlin/build-logic.root-build.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.root-build.gradle.kts
similarity index 100%
rename from build-logic/root-build/src/main/kotlin/build-logic.root-build.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.root-build.gradle.kts
diff --git a/build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.style.gradle.kts
similarity index 100%
rename from build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.style.gradle.kts
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.test-base.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.test-base.gradle.kts
similarity index 81%
rename from build-logic/jvm/src/main/kotlin/build-logic.test-base.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.test-base.gradle.kts
index 4e6b90482b..bbe51ce6bb 100644
--- a/build-logic/jvm/src/main/kotlin/build-logic.test-base.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.test-base.gradle.kts
@@ -1,13 +1,9 @@
-import com.github.vlsi.gradle.dsl.configureEach
-import com.github.vlsi.gradle.properties.dsl.props
-import org.gradle.api.tasks.testing.Test
-
 plugins {
     id("java-library")
     id("build-logic.build-params")
 }
 
-tasks.configureEach<Test> {
+tasks.withType<Test>().configureEach {
     buildParameters.testJdk?.let {
         javaLauncher.convention(javaToolchains.launcherFor(it))
     }
@@ -28,7 +24,8 @@ tasks.configureEach<Test> {
     if (buildParameters.testJdkVersion >= 21) {
         jvmArgs("-XX:+EnableDynamicAgentLoading")
     }
-    props.string("testExtraJvmArgs").trim().takeIf { it.isNotBlank() }?.let {
+    val testExtraJvmArgs = (project.findProperty("testExtraJvmArgs") as? String) ?: ""
+    testExtraJvmArgs.trim().takeIf { it.isNotBlank() }?.let {
         jvmArgs(it.split(" ::: "))
     }
     // Pass the property to tests
@@ -40,9 +37,9 @@ tasks.configureEach<Test> {
     passProperty("java.awt.headless")
     passProperty("user.language", "TR")
     passProperty("user.country", "tr")
-    val props = System.getProperties()
+    val sysProps = System.getProperties()
     @Suppress("UNCHECKED_CAST")
-    for (e in props.propertyNames() as `java.util`.Enumeration<String>) {
+    for (e in sysProps.propertyNames() as `java.util`.Enumeration<String>) {
         if (e.startsWith("pgjdbc.")) {
             passProperty(e)
         }
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.test-junit5.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.test-junit5.gradle.kts
similarity index 87%
rename from build-logic/jvm/src/main/kotlin/build-logic.test-junit5.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.test-junit5.gradle.kts
index 1ca84140cf..44ee93eab6 100644
--- a/build-logic/jvm/src/main/kotlin/build-logic.test-junit5.gradle.kts
+++ b/build-logic/conventions/src/main/kotlin/build-logic.test-junit5.gradle.kts
@@ -1,6 +1,3 @@
-import com.github.vlsi.gradle.dsl.configureEach
-import com.github.vlsi.gradle.properties.dsl.props
-
 plugins {
     id("java-library")
     id("build-logic.build-params")
@@ -25,11 +22,10 @@ dependencies {
     testRuntimeOnly("org.junit.platform:junit-platform-launcher")
 }
 
-tasks.configureEach<Test> {
+tasks.withType<Test>().configureEach {
     useJUnitPlatform {
-        props.string("includeTestTags")
-            .takeIf { it.isNotBlank() }
-            ?.let { includeTags(it) }
+        val includeTestTags = (project.findProperty("includeTestTags") as? String) ?: ""
+        includeTestTags.takeIf { it.isNotBlank() }?.let { includeTags(it) }
     }
     // Pass the property to tests
     fun passProperty(name: String, default: String? = null) {
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.without-type-annotations.gradle.kts b/build-logic/conventions/src/main/kotlin/build-logic.without-type-annotations.gradle.kts
similarity index 100%
rename from build-logic/jvm/src/main/kotlin/build-logic.without-type-annotations.gradle.kts
rename to build-logic/conventions/src/main/kotlin/build-logic.without-type-annotations.gradle.kts
diff --git a/build-logic/java-comment-preprocessor/src/main/kotlin/buildlogic/JavaCommentPreprocessorTask.kt b/build-logic/conventions/src/main/kotlin/buildlogic/JavaCommentPreprocessorTask.kt
similarity index 100%
rename from build-logic/java-comment-preprocessor/src/main/kotlin/buildlogic/JavaCommentPreprocessorTask.kt
rename to build-logic/conventions/src/main/kotlin/buildlogic/JavaCommentPreprocessorTask.kt
diff --git a/build-logic/basics/src/main/kotlin/configureToolchain.kt b/build-logic/conventions/src/main/kotlin/configureToolchain.kt
similarity index 100%
rename from build-logic/basics/src/main/kotlin/configureToolchain.kt
rename to build-logic/conventions/src/main/kotlin/configureToolchain.kt
diff --git a/build-logic/java-comment-preprocessor/build.gradle.kts b/build-logic/java-comment-preprocessor/build.gradle.kts
deleted file mode 100644
index 849924d5ff..0000000000
--- a/build-logic/java-comment-preprocessor/build.gradle.kts
+++ /dev/null
@@ -1,8 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    implementation("com.igormaznitsa:jcp:7.3.0")
-    implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:3.0.2")
-}
diff --git a/build-logic/jvm/build.gradle.kts b/build-logic/jvm/build.gradle.kts
deleted file mode 100644
index 42afc21ce4..0000000000
--- a/build-logic/jvm/build.gradle.kts
+++ /dev/null
@@ -1,14 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    implementation(project(":basics"))
-    implementation(project(":build-parameters"))
-    implementation(project(":verification"))
-    implementation("com.github.vlsi.crlf:com.github.vlsi.crlf.gradle.plugin:3.0.2")
-    implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:3.0.2")
-    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin")
-    implementation("com.github.autostyle:com.github.autostyle.gradle.plugin:4.0")
-    implementation("com.github.vlsi.jandex:com.github.vlsi.jandex.gradle.plugin:3.0.2")
-}
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.java-library.gradle.kts b/build-logic/jvm/src/main/kotlin/build-logic.java-library.gradle.kts
deleted file mode 100644
index 5760723959..0000000000
--- a/build-logic/jvm/src/main/kotlin/build-logic.java-library.gradle.kts
+++ /dev/null
@@ -1,4 +0,0 @@
-plugins {
-    id("build-logic.java")
-    id("java-library")
-}
diff --git a/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts b/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts
deleted file mode 100644
index 969f37cd74..0000000000
--- a/build-logic/jvm/src/main/kotlin/build-logic.kotlin.gradle.kts
+++ /dev/null
@@ -1,51 +0,0 @@
-import com.github.vlsi.gradle.dsl.configureEach
-import org.jetbrains.kotlin.gradle.dsl.JvmTarget
-import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
-import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
-
-plugins {
-    id("java-library")
-    id("build-logic.java")
-    id("build-logic.test-base")
-    id("com.github.vlsi.gradle-extensions")
-    id("com.github.autostyle")
-    kotlin("jvm")
-}
-
-java {
-    withSourcesJar()
-}
-
-val String.v: String get() = rootProject.extra["$this.version"] as String
-
-autostyle {
-    kotlin {
-        file("$rootDir/config/licenseHeaderRaw").takeIf { it.exists() }?.let {
-            licenseHeader(it.readText())
-        }
-        trimTrailingWhitespace()
-        endWithNewline()
-    }
-}
-
-tasks.configureEach<KotlinJvmCompile> {
-    compilerOptions {
-        if (!name.startsWith("compileTest")) {
-            apiVersion = KotlinVersion.fromVersion("kotlin.api".v)
-        }
-        freeCompilerArgs.add("-Xjvm-default=all")
-        val jdkRelease = buildParameters.targetJavaVersion.let {
-            when {
-                it < 9 -> "1.8"
-                else -> it.toString()
-            }
-        }
-        // jdk-release requires Java 9+
-        buildParameters.buildJdkVersion
-            .takeIf { it > 8 }
-            ?.let {
-                freeCompilerArgs.add("-Xjdk-release=$jdkRelease")
-            }
-        jvmTarget = JvmTarget.fromTarget(jdkRelease)
-    }
-}
diff --git a/build-logic/publishing/build.gradle.kts b/build-logic/publishing/build.gradle.kts
deleted file mode 100644
index 1046e6112e..0000000000
--- a/build-logic/publishing/build.gradle.kts
+++ /dev/null
@@ -1,12 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    implementation(project(":basics"))
-    implementation(project(":jvm"))
-    implementation(project(":build-parameters"))
-    implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:3.0.2")
-    implementation("com.gradleup.nmcp:com.gradleup.nmcp.gradle.plugin:1.5.0")
-    implementation("com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:9.4.1")
-}
diff --git a/build-logic/publishing/src/main/kotlin/build-logic.publish-to-tmp-maven-repo.gradle.kts b/build-logic/publishing/src/main/kotlin/build-logic.publish-to-tmp-maven-repo.gradle.kts
deleted file mode 100644
index 673770849a..0000000000
--- a/build-logic/publishing/src/main/kotlin/build-logic.publish-to-tmp-maven-repo.gradle.kts
+++ /dev/null
@@ -1,41 +0,0 @@
-plugins {
-    id("java-library")
-    id("maven-publish")
-}
-
-val localRepoElements by configurations.creating {
-    isCanBeConsumed = true
-    isCanBeResolved = false
-    description =
-        "Shares local maven repository directory that contains the artifacts produced by the current project"
-    attributes {
-        attribute(Category.CATEGORY_ATTRIBUTE, objects.named("maven-repository"))
-        attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
-    }
-}
-
-val localRepoDir = layout.buildDirectory.dir("local-maven-repo")
-
-publishing {
-    repositories {
-        maven {
-            name = "tmp-maven"
-            url = uri(localRepoDir)
-        }
-    }
-}
-
-localRepoElements.outgoing.artifact(localRepoDir) {
-    builtBy(tasks.named("publishAllPublicationsToTmp-mavenRepository"))
-}
-
-val cleanLocalRepository by tasks.registering(Delete::class) {
-    description = "Clears local-maven-repo so timestamp-based snapshot artifacts do not consume space"
-    delete(localRepoDir)
-}
-
-tasks.withType<PublishToMavenRepository>()
-    .matching { it.name.endsWith("PublicationToTmp-mavenRepository") }
-    .configureEach {
-        dependsOn(cleanLocalRepository)
-    }
diff --git a/build-logic/root-build/build.gradle.kts b/build-logic/root-build/build.gradle.kts
deleted file mode 100644
index 5a5efd88f5..0000000000
--- a/build-logic/root-build/build.gradle.kts
+++ /dev/null
@@ -1,8 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    implementation(project(":build-parameters"))
-    implementation("com.gradleup.nmcp.aggregation:com.gradleup.nmcp.aggregation.gradle.plugin:1.5.0")
-}
diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts
index c63590fd1e..736c57dc9b 100644
--- a/build-logic/settings.gradle.kts
+++ b/build-logic/settings.gradle.kts
@@ -11,11 +11,5 @@ dependencyResolutionManagement {
 
 rootProject.name = "build-logic"
 
-includeBuild("../build-logic-commons")
 include("build-parameters")
-include("basics")
-include("jvm")
-include("java-comment-preprocessor")
-include("publishing")
-include("root-build")
-include("verification")
+include("conventions")
diff --git a/build-logic/verification/build.gradle.kts b/build-logic/verification/build.gradle.kts
deleted file mode 100644
index 69ec88db1c..0000000000
--- a/build-logic/verification/build.gradle.kts
+++ /dev/null
@@ -1,16 +0,0 @@
-plugins {
-    id("build-logic.kotlin-dsl-gradle-plugin")
-}
-
-dependencies {
-    // See https://github.com/gradle/gradle/issues/15383#issuecomment-779893192
-    implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
-    implementation(project(":basics"))
-    implementation(project(":build-parameters"))
-    implementation("com.github.autostyle:com.github.autostyle.gradle.plugin:4.0")
-    implementation("com.github.vlsi.gradle-extensions:com.github.vlsi.gradle-extensions.gradle.plugin:3.0.2")
-    implementation("de.thetaphi.forbiddenapis:de.thetaphi.forbiddenapis.gradle.plugin:3.10")
-    implementation("net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:5.1.0")
-    implementation("org.checkerframework:org.checkerframework.gradle.plugin:1.0.2")
-    implementation("org.openrewrite.rewrite:org.openrewrite.rewrite.gradle.plugin:7.33.0")
-}
diff --git a/build.gradle.kts b/build.gradle.kts
index 98fdf71128..905932125c 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -4,7 +4,6 @@
  */
 
 plugins {
-    id("build-logic.repositories")
     id("build-logic.build-params")
     id("build-logic.root-build")
     id("org.nosphere.gradle.github.actions")
@@ -15,6 +14,13 @@ plugins {
     id("jacoco")
 }
 
+repositories {
+    if (buildParameters.enableMavenLocal) {
+        mavenLocal()
+    }
+    mavenCentral()
+}
+
 buildscript {
     configurations.classpath {
         exclude("xerces")
diff --git a/pgjdbc-junit4-test/build.gradle.kts b/pgjdbc-junit4-test/build.gradle.kts
index a1e77b4d41..6b557732e9 100644
--- a/pgjdbc-junit4-test/build.gradle.kts
+++ b/pgjdbc-junit4-test/build.gradle.kts
@@ -1,5 +1,6 @@
 plugins {
-    id("build-logic.java-library")
+    id("build-logic.java")
+    id("java-library")
 }
 
 dependencies {
diff --git a/pgjdbc-mockito-test/build.gradle.kts b/pgjdbc-mockito-test/build.gradle.kts
index a14a22d1a6..6c275acb1f 100644
--- a/pgjdbc-mockito-test/build.gradle.kts
+++ b/pgjdbc-mockito-test/build.gradle.kts
@@ -1,5 +1,6 @@
 plugins {
-    id("build-logic.java-library")
+    id("build-logic.java")
+    id("java-library")
     id("build-logic.test-junit5")
 }
 
diff --git a/pgjdbc-osgi-test/build.gradle.kts b/pgjdbc-osgi-test/build.gradle.kts
index 33d82e71ec..6ec45ac248 100644
--- a/pgjdbc-osgi-test/build.gradle.kts
+++ b/pgjdbc-osgi-test/build.gradle.kts
@@ -1,5 +1,6 @@
 plugins {
-    id("build-logic.java-library")
+    id("build-logic.java")
+    id("java-library")
 }
 
 val pgjdbcRepository by configurations.creating {
diff --git a/testkit/build.gradle.kts b/testkit/build.gradle.kts
index e28b3e585a..78a64abf7f 100644
--- a/testkit/build.gradle.kts
+++ b/testkit/build.gradle.kts
@@ -1,5 +1,6 @@
 plugins {
-    id("build-logic.java-library")
+    id("build-logic.java")
+    id("java-library")
     id("build-logic.without-type-annotations")
 }
 


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: github://pgjdbc/pgjdbc
  Cc: [email protected], [email protected]
  Subject: Re: [pgjdbc/pgjdbc] PR #4143: Simplify build
  In-Reply-To: <<[email protected]>>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox