'How to compare version numbers in gradle?

I need to use a different Gradle plugin version dependening the Gradle version. How can I compare a version in Gradle? The variable gradle.gradleVersion is a string and can't good compare. The follow does not work if the minor version has only one digit.

buildscript {
  dependencies {
     def ver = gradle.gradleVersion >= '2.12' ? '+' : '1.5.+'
     classpath group: 'de.inetsoftware', name: 'SetupBuilder', version: ver
  }
}


Solution 1:[1]

The class VersionNumber is the trick:

buildscript {
  dependencies {
     def ver = VersionNumber.parse( gradle.gradleVersion ) >= VersionNumber.parse( '2.12' ) ? '+' : '1.5.+'
     classpath group: 'de.inetsoftware', name: 'SetupBuilder', version: ver
  }
}

Note: VersionNumber is deprecated in Gradle 7 and is being removed from Gradle 8. There is no public replacement (it was never meant to be used outside of Gradle internal code). See docs.

https://docs.gradle.org/current/javadoc/org/gradle/util/VersionNumber.html

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Samuel Neff