https://kotlinlang.org logo
#eap
Title
r

rocketraman

03/03/2022, 6:21 PM
Declaring
kotlin("jvm") version "1.6.20-M1"
seems to break my build:
Copy code
java.lang.NoClassDefFoundError: com/gradle/scan/plugin/BuildScanExtension
	at org.jetbrains.kotlin.gradle.plugin.KotlinGradleBuildServices$Companion.addListeners(KotlinGradleBuildServices.kt:65)
	at org.jetbrains.kotlin.gradle.plugin.KotlinGradleBuildServices$Companion$registerIfAbsent$1.execute(KotlinGradleBuildServices.kt:57)
	at org.jetbrains.kotlin.gradle.plugin.KotlinGradleBuildServices$Companion$registerIfAbsent$1.execute(KotlinGradleBuildServices.kt:51)
	at org.gradle.api.services.internal.DefaultBuildServicesRegistry.registerIfAbsent(DefaultBuildServicesRegistry.java:115)
...
Caused by: java.lang.ClassNotFoundException: com.gradle.scan.plugin.BuildScanExtension
	... 187 more
l

louiscad

03/03/2022, 9:23 PM
Is your project multi-modules, with some modules on a different Kotlin version? If so, this is not supported because of classloader gotchas.
r

rocketraman

03/03/2022, 9:26 PM
Nope
The problem appears to be an incompatibility with this boiler-plate script I have in
~/.gradle/init.d/scans.init.gradle.kts
to enable Gradle build scans in all my builds, with the following content:
Copy code
import com.gradle.enterprise.gradleplugin.GradleEnterprisePlugin
import com.gradle.scan.plugin.BuildScanPlugin
import org.gradle.util.GradleVersion

initscript {
  val pluginVersion = "3.8.1"

  repositories {
    gradlePluginPortal()
  }
  dependencies {
    classpath("com.gradle:gradle-enterprise-gradle-plugin:${pluginVersion}")
  }
}

val isTopLevelBuild = gradle.getParent() == null
if (isTopLevelBuild) {
  val gradleVersion = GradleVersion.current().baseVersion
  val atLeastGradle5 = gradleVersion >= GradleVersion.version("5.0")
  val atLeastGradle6 = gradleVersion >= GradleVersion.version("6.0")

  if (atLeastGradle6) {
    settingsEvaluated {
      if (!pluginManager.hasPlugin("com.gradle.enterprise")) {
        pluginManager.apply(GradleEnterprisePlugin::class)
      }
      extensions["gradleEnterprise"].withGroovyBuilder {
        configureExtension(getProperty("buildScan"))
      }
    }
  } else if (atLeastGradle5) {
    rootProject {
      pluginManager.apply(BuildScanPlugin::class)
      configureExtension(extensions["buildScan"])
    }
  }
}

fun configureExtension(extension: Any) {
  extension.withGroovyBuilder {
    setProperty("termsOfServiceUrl", "<https://gradle.com/terms-of-service>")
    setProperty("termsOfServiceAgree", "yes")
    // other configuration
  }
}
This works fine with 1.6.10.
a

Alexey Belkov [JB]

03/04/2022, 8:04 AM
2 Views