How to download sonarqube-gradle-plugin and reference it from local directory

SonarQube Version : 9.9LTS
Sonar-Gradle-Plugin: 3.5.0.2730

SonarQube Deployment: RHEL VM

Currently I am referencing sonarqube-gradle-plugin like this.

buildscript {

    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }

    dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.5.0.2730"
    }

}

apply plugin: org.sonarqube.gradle.SonarQubePlugin

Now I want to use this plugin even when I am not connected to Internet. So I downloaded the plugin jar from here: plugins.gradle.org/m2/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/3.5.0.2730/
File Name: sonarqube-gradle-plugin-3.5.0.2730.jar

I added it to my project root into a folder named lib and tried to use it by modifying the build.gradle like this

buildscript {
    repositories {
        flatDir {
            dirs "lib"
        }
    }
    dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1"
    }
}

apply plugin: org.sonarqube.gradle.SonarQubePlugin

When I sync the gradle file it throws the following errors:

  • Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin class ‘org.sonarqube.gradle.SonarQubePlugin’.
  • Caused by: org.gradle.api.internal.tasks.DefaultTaskContainer$TaskCreationException: Could not create task ‘:moduleName:sonarqube’.
  • Caused by: org.gradle.api.tasks.TaskInstantiationException: Could not create task of type ‘SonarQubeTask’.
  • Caused by: org.gradle.internal.instantiation.ClassGenerationException: Could not generate a decorated class for type SonarQubeTask.
  • Caused by: java.lang.NoClassDefFoundError: org/sonarsource/scanner/api/LogOutput
  • Caused by: java.lang.ClassNotFoundException: org.sonarsource.scanner.api.LogOutput
  • Unable to load class ‘org.sonarsource.scanner.api.LogOutput’.

How to resolve this ? And why is this happening?

Is this because the the sonarqube-gradle-plugin is missing some dependency ?

Hey there.

This seems like an issue you’d face with any Gradle plugin, but I’m curious, is using --ofline enough after a full build?

--offline
Specifies that the build should operate without accessing network resources.

Otherwise using a plugin like this might do what you need.

Got the fix.
Just had to add it’s dependency org.sonarsource.scanner.api:sonar-scanner-api:2.16.1.361

buildscript {
    repositories {
        flatDir {
            dirs path
        }
    }
    dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1"
        classpath "org.sonarsource.scanner.api:sonar-scanner-api:2.16.1.361"
    }
}

apply plugin: org.sonarqube.gradle.SonarQubePlugin