A Maven wrapper is a nice idea borrowed from Gradle.
- It makes the project's build fully encapsulated. Users don't have to setup a version of Maven (which could potentially be different than that recommended by Calcite)
- It also allows Calcite to control the Maven dependency (upgrading to newer versions for example) making it transparent to the user.
- Users now will use maven commands as
Presto has done the same – https://github.com/prestodb/presto/blob/master/mvnw
It is also extremely easy to setup. See https://github.com/takari/maven-wrapper .