Hi,

I've started a PR for migrating Avatica build system from Maven to Gradle:
https://github.com/apache/calcite-avatica/pull/104

Some of the Gradle benefits can be found in
https://issues.apache.org/jira/browse/CALCITE-2905

As of now PR is good enough to try how Gradle build feels.
It builds the project, loads it to IDE, enables to execute tests, etc, etc.

If you are new to Gradle, you might find the following set of commands
useful (not everything works in Avatica's build, yet lots of basic commands
do): https://github.com/vlsi/jmeter/blob/gradle/gradle.md

I've put a list of "todo items" at the top of PR104. Feel free to suggest
new items (or remove items).

Comments are welcome.


Just a couple of datapoints:
1) "Repeated build of avatica-core without modifications"
mvn package -DskipTests:  18sec, 24sec, 21sec, 18sec
gw build -x test: 14sec, 1sec, 1sec, 1sec

As you see, Gradle recognizes that nothing should be compiled.
Maven seems to perform checkstyle and full compilation even for no-op cases.

2) "Alter string literal in AvaticaStatement#checkOpen and build with tests"
mvn package: 20sec, 19sec
gw build -x test: 15sec, 15sec, 15ec

3) "Alter string literal in server/...HttpServer#stop and build with tests"
Two points here:
3.1) "clean" build is comparable (even though `clean` should be extremely
rare)
3.2) Gradle figured out that change in server/...HttpServer#stop does not
impact core, thus it avoided "core" compilation, tests, etc.
mvn package: 56sec, 48sec, 48sec
gw build: 50sec, 22sec, 22sec


Vladimir

Reply via email to