2024.3 Build Issues

Hello. I’m having some issues building my plugin. I was initially able to build my plugin my local machine (MacOS). However, I started seeing issues in my CI/CD (Linux) and was able to eventually replicate locally.

IDE Target Version: 2024.3

I first added a --stacktrace flag and saw this error:

[2025-03-05T05:04:16.355Z] Execution failed for task ':sage:verifyPluginProjectConfiguration'.
[2025-03-05T05:04:16.355Z] > Failed to query the value of task ':sage:verifyPluginProjectConfiguration' property 'runtimeMetadata'.
[2025-03-05T05:04:16.355Z]    > Process 'command '/home/jenkins/.gradle/caches/transforms-3/ccc2abeb05dbed5915d87398864c546d/transformed/ideaIC-2024.3/jbr/bin/java'' finished with non-zero exit value 6
[2025-03-05T05:04:16.355Z] 
[2025-03-05T05:04:16.355Z] * Try:
[2025-03-05T05:04:16.355Z] > Run with --info or --debug option to get more log output.
[2025-03-05T05:04:16.355Z] > Run with --scan to get full insights.
[2025-03-05T05:04:16.355Z] > Get more help at https://help.gradle.org.
[2025-03-05T05:04:16.355Z] 
[2025-03-05T05:04:16.355Z] * Exception is:
[2025-03-05T05:04:16.355Z] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sage:verifyPluginProjectConfiguration'.
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:148)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:146)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:134)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
[2025-03-05T05:04:16.355Z] 	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[2025-03-05T05:04:16.355Z] 	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)

Unsure of what was causing the underlying issue here I added additional info and debug flags. This surfaced a different exception trace:

[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.484+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.484+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.484+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 'org.slf4j.spi.LoggingEventBuilder org.slf4j.Logger.atDebug()'
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.484+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Run with --scan to get full insights.
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Get more help at https://help.gradle.org.
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.485+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] java.lang.NoSuchMethodError: 'org.slf4j.spi.LoggingEventBuilder org.slf4j.Logger.atDebug()'
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.486+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.logXInclude(XIncluder.kt:302)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.486+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.resolveXIncludeElements(XIncluder.kt:117)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.486+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.resolveIncludeOrNonInclude(XIncluder.kt:55)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.486+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.resolveNonXIncludeElement(XIncluder.kt:215)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.486+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.resolveXIncludes(XIncluder.kt:48)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.487+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder.access$resolveXIncludes(XIncluder.kt:29)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.487+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.xinclude.XIncluder$Companion.resolveXIncludes(XIncluder.kt:38)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.487+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.plugin.PluginCreator.resolveXIncludesOfDocument(PluginCreator.kt:747)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.487+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.plugin.PluginCreator.resolveDocumentAndValidateBean(PluginCreator.kt:694)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.488+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.plugin.PluginCreator.access$resolveDocumentAndValidateBean(PluginCreator.kt:51)
[2025-03-05T05:35:42.814Z] 2025-03-05T05:35:42.488+0000 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.jetbrains.plugin.structure.intellij.plugin.PluginCreator$Companion.createPlugin(PluginCreator.kt:130)

This typically hints at a dependency resolution issue. I’ve tried a few things with locking or excluding versions of slf4j-api and bumping some of my dependency versions but I’ve had no luck.

Curious if anyone has run into a similar issue or if folks are aware of what is wrong here.

The only other topic I’ve seen is this github issue - Project synchronization error with the new plugin · Issue #1806 · JetBrains/intellij-platform-gradle-plugin · GitHub.

Could you please share your build script?

The project structure is a multi-module project. Here’s the main modules of concern

Root build.gradle

buildscript {
    repositories {
        maven {
            url "https://jitpack.io"
        }

        maven {
            url "https://www.jetbrains.com/intellij-repository/snapshots"
        }

        maven {
            url "https://cache-redirector.jetbrains.com/intellij-dependencies"
        }
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
        classpath "io.qameta.allure.gradle.allure:allure-plugin:$allure_version"
    }
}

plugins {
    id 'jacoco'
    id 'java'
    id("io.ktor.plugin") version "2.3.13" apply false
}

subprojects {
    apply plugin: "idea"
    apply plugin: "kotlin"
    apply plugin: "groovy"
    apply plugin: 'maven-publish'
    apply plugin: 'project-report'
}

Submodule build.gradle

plugins {
    id 'io.qameta.allure'
    id("org.jetbrains.intellij.platform") version "${intellij_platform_version}"
    id("org.jetbrains.grammarkit") version "2022.3.2.2"
}

repositories {
    mavenCentral()
    intellijPlatform {
        defaultRepositories()
    }
}

dependencies {
    configurations {
        implementation {
            exclude group: "xerces", module: "xercesImpl"
            exclude group: "xerces", module: "xmlParserAPIs"
            exclude group: "xml-apis", module: "xml-apis"
            exclude group: "log4j", module: "log4j"
//            exclude group: "log4j", module: "log4j-api"
//            exclude group: "log4j", module: "log4j-core"
            exclude group: "commons-digester", module: "commons-digester"
            exclude group: "it.unimi.dsi", module: "fastutil"
            exclude group: "org.yaml", module: "snakeyaml"
            exclude group: "com.google.guava", module: "guava"
//            exclude group: "org.slf4j", module: "slf4j-api"
//            exclude group: "org.slf4j", module: "jcl-over-slf4j"
        }
    }
    // IntelliJ Platform stuff
    intellijPlatform {
        create("IC", providers.gradleProperty("idea_version"))

        if (project.findProperty("idea_version") == "2024.3") {
            bundledPlugin("com.intellij.modules.json")
        }
        testFramework(TestFrameworkType.Plugin.Java.INSTANCE)
        testFramework(TestFrameworkType.Platform.INSTANCE)
        instrumentationTools()
    }

    implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
    implementation ("com.fasterxml.jackson.core:jackson-databind") {
        version {
            strictly "$jackson_version"
        }
    }
    implementation "com.fasterxml.jackson.module:jackson-module-jsonSchema:$jackson_version"
    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:$jackson_version"

    implementation ("commons-io:commons-io:2.11.0")
    implementation "com.konghq:unirest-java:$unirest_version"
    implementation "org.apache.httpcomponents:httpclient:4.5.13"
    implementation "com.google.code.gson:gson:2.9.1"
    implementation ("com.google.inject:guice") {
        version {
            strictly "$guice_version"
        }
    }
    implementation("com.google.guava:guava") {
        version {
            strictly "$guava_version"
        }
    }
    implementation ("org.reflections:reflections:0.9.12")
    implementation "de.odysseus.juel:juel-impl:2.2.7"
    implementation "de.odysseus.juel:juel-api:2.2.7"
    implementation "javax.el:javax.el-api:3.0.0"
    implementation "com.jcraft:jsch:0.1.54"
    implementation "org.eclipse.jgit:org.eclipse.jgit:6.6.1.202309021850-r"
    implementation "org.apache.logging.log4j:log4j-core:$log4j_version"
    implementation "org.apache.logging.log4j:log4j-api:$log4j_version"
    implementation("org.slf4j:slf4j-api") {
        version {
            strictly("2.0.7")
        }
    }
    api ("org.eclipse.lsp4j:org.eclipse.lsp4j") {
        version {
            strictly '0.19.0'
        }
    }
    implementation group: 'com.vladsch.flexmark', name: 'flexmark', version: '0.64.0'
    implementation ('org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.4.1')
    implementation ('org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1')
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.atteo:evo-inflector:1.2.2"
    implementation ("org.apache.commons:commons-lang3") {
        version {
            strictly '3.11'
        }
    }
    api "com.konghq:unirest-java:$unirest_version"
    api "com.github.everit-org.json-schema:org.everit.json.schema:1.12.0"
    testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
    testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$junit_version"
    testImplementation "io.mockk:mockk:$mockk_version"
    testImplementation("com.auth0:java-jwt:3.3.0") {
        exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
    }
}

I’ve omitted some internal libraries but that is the general skeleton.

Thanks. For the complete image I’ll need gradle.properties to check the versions you have set.

Hi Jakub. I appreciate you taking a look. Here’s my gradle.properties

idea_version=2024.3
kotlin_version=1.9.20
kotlin.stdlib.default.dependency=false # I was testing this out to see if it would make any difference
allure_version=2.11.2
jacoco_version=0.8.7
junit_version=5.7.0
mockk_version=1.12.3
intellij_platform_version=2.0.0
jackson_version=2.17.1
unirest_version=3.14.1
spring_boot_version=2.7.7
snake_yaml_version=1.33
log4j_version=2.18.0
guava_version =32.1.3-jre
guice_version=7.0.0
useLanguageServer=false

Hi @jakub.chrzanowski. Curious if you were able to take a look into this at all.

Well, actually yes! I had exactly a similar exception happening in our TeamCity builds.
It turned out that JBR, which gets picked for the IntelliJ Platform of your choice, misses some system libraries.
We fixed this by bumping the Docker image to use a newer Linux distribution, something like Ubuntu 2024.
Optionally, you can request for a different JBR distribution in lb variant, but I’d start with upgrading the OS image.

My colleague said:

It helped to update the CI Docker image to one based on a newer Linux with newer libc. Before, we used amazoncorretto:17, now we switched to sapmachine:21 (amazoncorretto:21 still used older Linux, and amazoncorretto:21-al2023 lacks xargs that TeamCity apparently needs)

Let me know how that goes.

I don’t think I’ll be able to upgrade the image anytime soon unfortunately. How would I go about requesting a different JBR distribution?

Please verify if the IntelliJ Platform Gradle Plugin 2.5.0 resolved this issue. I’ve updated the approach on how JBR is resolved now.

I’m seeing this error when trying to bump the platform plugin to 2.5.0:

> Failed to apply plugin class 'org.jetbrains.intellij.platform.gradle.plugins.project.IntelliJPlatformBasePlugin'.
   > Could not register artifact transform ExtractorTransformer (from {intellijPlatformExtracted=false} to {intellijPlatformExtracted=true}).
      > Cannot set the value of property 'extractorService' of type org.jetbrains.intellij.platform.gradle.services.ExtractorService using a provider of type org.jetbrains.intellij.platform.gradle.services.ExtractorService.

Is a new minimum version of gradle required? I’m still using 8.5 and also saw the same issue when bumping the version of my gradle wrapper to 8.11

That’s weird - Gradle 8.5 is still supported, and unit/integration tests are passing on CI with no issues: 2.5.0 · JetBrains/intellij-platform-gradle-plugin@5abf672 · GitHub

Looks like it might’ve been some issues with my multi-module project setup. I was able to finally get my project to build on the pipeline by just building my core module. I also did have to disable buildSearchableOptions which is okay since my plugin isn’t leveraging any custom settings. Appreciate all the help with this one @jakub.chrzanowski .

I did note one thing that was significant related to API changes in upgrading to 2.5.0, however. It seems that some of the VCS utilities/classes are not included in the platform dependencies anymore that we were previously leveraging. Specifically classes like VCSDiffUtil. I did see that those classes still exist but under a different package but I’m unable to reference them. Is there a bundled plugin that I should be potentially referencing as a dependency? I didn’t see a vcs-related one in the official documentation.