pgjdbc/pgjdbc GitHub issues and pull requests (mirror)
help / color / mirror / Atom feedFrom: 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