@ScannerSide @ServerSide @ComputeEngineSide @Immutable public class SonarQubeVersion extends java.lang.Object
Example: a plugin extension needs a new feature of API 6.0 without breaking compatibility with version 5.6 at runtime. This new feature would be disabled when plugin is executed within SonarQube 5.6.
// Component provided by sonar-plugin-api // @since 5.6 public interface AnApi { // implicitly since 5.6 public void foo(); // @since 6.0 public void bar(); } // Component provided by plugin public class MyExtension { private final SonarQubeVersion sonarQubeVersion; private final AnApi api; public MyExtension(SonarQubeVersion sonarQubeVersion, AnApi api) { this.sonarQubeVersion = sonarQubeVersion; this.api = api; } public void doSomething() { // assume that runtime is 5.6+ api.foo(); if (sonarQubeVersion.isGreaterThanOrEqual(Version.create(6, 0))) { api.bar(); } } }
Note that Sensor
extensions can directly get SonarQubeVersion
through
SensorContext.getSonarQubeVersion()
, without using constructor injection:
public class MySensor implements Sensor { public void execute(SensorContext context) { if (context.getSonarQubeVersion().isGreaterThanOrEqual(Version.create(6, 0)) { context.newMethodIntroducedIn6_0(); } } }
The minimal supported version of SonarQube is verified at runtime. As plugin is built with sonar-plugin-api 6.0, we assume that the plugin requires v6.0 or greater at runtime. As the plugin codebase is compatible with 5.6, the plugin must define what is the effective minimal supported version through the configuration of sonar-packaging-maven-plugin 1.16+:
<packaging>sonar-plugin</packaging> <dependencies> <dependency> <groupId>org.sonarsource.sonarqube</groupId> <artifactId>sonar-plugin-api</artifactId> <version>6.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.sonarsource.sonar-packaging-maven-plugin</groupId> <artifactId>sonar-packaging-maven-plugin</artifactId> <version>1.16</version> <extensions>true</extensions> <configuration> <!-- Override the default value 6.0 which is guessed from sonar-plugin-api dependency --> <sonarQubeMinVersion>5.6</sonarQubeMinVersion> </configuration> </plugin> </plugins> </build>
The component SonarRuntime
, introduced in version 6.0, is more complete.
It is preferred over SonarQubeVersion
if compatibility with version 5.6 Long Term Support
is not required.
SonarRuntime
Modifier and Type | Field and Description |
---|---|
static Version |
V5_5
Deprecated.
in 6.0. Please define your own constants.
|
static Version |
V5_6
Deprecated.
in 6.0. Please define your own constants.
|
Constructor and Description |
---|
SonarQubeVersion(Version version) |
Modifier and Type | Method and Description |
---|---|
Version |
get() |
boolean |
isGreaterThanOrEqual(Version than) |
@Deprecated public static final Version V5_5
@Deprecated public static final Version V5_6
public SonarQubeVersion(Version version)