GradleWrapper
From APIDesign
For years I seem to have troubles adopting proper Gradle's way of life as my Gradle post reveals in deep details. Seeing the gradlew, gradlew.bat scripts and a JAR file called gradle-wrapper.jar in some projects used to drive me nuts.
However, in the context of APIDesign and particularly the PropertyFiles discussion, it is necessary to admit that using Gradle wrapper is a correct solution! The PropertyFiles essay concludes that When you design an API based on PropertyFiles, don't forget to include a version identifier in it. Only then your API becomes ready for evolution!
By specifying version of Gradle to use in each project in gradle-wrapper.properties one follows the best practice advocated by me. Given relatively frequent incompatibilities between various versions of Gradle the conclusion must be strong: If you want to be sure your Gradle projects builds in a year or two, then: Whenever you create a Gradle project - make sure it contains the wrapper and exactly specifies the Gradle version!