From 65b7b4a391cfce71e180b4e95fec9424e9691d23 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Wed, 26 Aug 2026 22:11:03 +0200 Subject: [PATCH 1/2] Remove deprecated Configuration.setVisible(boolean) call The per-project producer configuration called `isVisible = false`, which Gradle deprecated in 9.8.0-milestone-2 (scheduled for removal in Gradle 11). Builds that fail on deprecation warnings (`org.gradle.warning.mode=fail`) break as soon as a project applying the nmcp plugin is configured. The `visible` property no longer has any meaningful effect on the build, and the internal `nmcpProducer` configuration is already kept out of resolution via `canBeConsumed=true`/`canBeResolved=false`, so the call can be removed without changing behaviour on any supported Gradle version. --- nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt b/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt index e3de803..25216c0 100644 --- a/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt +++ b/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt @@ -24,8 +24,6 @@ internal abstract class DefaultNmcpExtension(private val project: Project): Nmcp project.configurations.create(nmcpProducerConfigurationName) { it.isCanBeConsumed = true it.isCanBeResolved = false - // See https://github.com/GradleUp/nmcp/issues/2 - it.isVisible = false it.configureAttributes(project) } From 6f01acc2f35070ea94bc1c2deea33ecb2de695e2 Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Thu, 27 Aug 2026 06:36:14 +0200 Subject: [PATCH 2/2] Guard Configuration.setVisible(boolean) behind a Gradle < 9.8 check Per review feedback: keep the `isVisible = false` behaviour on Gradle versions where it still matters (so publications aren't published as part of `assemble`), and only skip it on Gradle 9.8+ where the property is deprecated and inert. This avoids the deprecation warning on 9.8+ while preserving the original behaviour on older Gradle versions. --- .../src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt b/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt index 25216c0..5c06f1d 100644 --- a/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt +++ b/nmcp/src/main/kotlin/nmcp/internal/DefaultNmcpExtension.kt @@ -10,6 +10,7 @@ import org.gradle.api.Action import org.gradle.api.Project import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication +import org.gradle.util.GradleVersion @GExtension(pluginId = "com.gradleup.nmcp", publicType = NmcpExtension::class, extensionName = nmcpExtensionName) internal abstract class DefaultNmcpExtension(private val project: Project): NmcpExtension { @@ -24,6 +25,13 @@ internal abstract class DefaultNmcpExtension(private val project: Project): Nmcp project.configurations.create(nmcpProducerConfigurationName) { it.isCanBeConsumed = true it.isCanBeResolved = false + // See https://github.com/GradleUp/nmcp/issues/2 + // Without this, the publications end up being published as part of `assemble`. + // `Configuration.setVisible(boolean)` is deprecated as of Gradle 9.8 (and inert since), + // so only call it on older Gradle versions to stay warning-clean on 9.8+. + if (GradleVersion.current() < GradleVersion.version("9.8")) { + it.isVisible = false + } it.configureAttributes(project) }