Local developer settings
========================

The first invocation of any task in Lucene/Solr gradle build will generate
and save a project-local 'gradle.properties' file. This file contains
the defaults you may (but don't have to) tweak for your particular hardware
(or taste).

This is an overview of some of these settings.

Parallelism
-----------

Gradle build can run tasks in parallel but by default it consumes all CPU cores which
is too optimistic a default for Lucene/Solr tests. You can disable the parallelism
entirely or assign it a 'low' priority with these properties:

org.gradle.parallel=[true, false]
org.gradle.priority=[normal, low]

The default level of parallelism is computed based on the number of cores on
your machine (on the first run of gradle build). By default these are fairly conservative
settings (half the number of cores for workers, for example):

org.gradle.workers.max=[X]
tests.jvms=[N <= X]

The number of test JVMs can be lower than the number of workers: this just means
that two projects can run tests in parallel to saturate all the workers. The I/O and memory
bandwidth limits will kick in quickly so even if you have a very beefy machine bumping
it too high may not help.

You can always override these settings locally using command line as well:
gradlew -Ptests.jvms=N --max-workers=X

Test JVMS
---------

Test JVMs have their own set of arguments which can be customized. These are configured
separately from the gradle workers, for example:

tests.jvms=3
tests.heapsize=512m
tests.minheapsize=512m
tests.jvmargs=-XX:+UseParallelGC -XX:TieredStopAtLevel=1

Gradle Daemon
-------------

The gradle daemon is a background process that keeps an evaluated copy of the project
structure, some caches, etc. It speeds up repeated builds quite a bit but if you don't
like the idea of having a (sizeable) background process running in the background,
disable it.

org.gradle.daemon=[true, false]
org.gradle.jvmargs=...

