My machine is in a poor state. But still, the default mvn install took
more than 7 minutes.
For info the minimal build takes 3:20 (4:30 with the integration tests).
We have added a few mechanisms over time on OGM:
* modules depending on an external DB are skipped if SOMEDB_HOSTNAME is
not set
* skipDocs which skips documentation and JavaDocs (JavaDocs take a lot
of time on my machine)
* skipITs which skips the integration tests
* skipDistro which skips the distribution
While each individual mechanism serves a purpose, it ends up serving
everyone badly. Minimalarians complain about the myriad of flags to
write each time. Safarians complain that if they forget
COUCHDB_HOSTNAME, the distribution will simply not contain it.
I think there are four main use cases
1. run the test suite for one specific db + rebuild core as things might
have changed
2. run the minimal test suite to make sure things compile and work
3. run a full test on every backend and build the distribution for a
release
4. other cases
I suspect the % of time per use case is as follow (your mileage may
vary):
1. 45%
2. 45%
3. 1%
4. 9%
But when you are in case 3. you absolutely must be sure everything run
and no module is skipped.
Here is a proposal
a. Provide a -Dminimal flag to run in case 1.
b. Provide a -Dcomplete flag to run in case 3.
c. Provide a script to do 2. I suspect case 2. can only be done with a
custom script or by moving to Gradle. For various reasons, I don't want
us to move to Gradle at this stage.
Everyone OK with doing a. and b.
The problem with c. is that making a cross platform script requires time
but we could make it work for us at least.
Note that this leaves open what 'mvn clean install' should do.
Thoughts?
Emmanuel