Answers inline.
2013/11/28 Emmanuel Bernard <emmanuel(a)hibernate.org
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.
You still would have to specify the backend you want to build, right? How
would such flag be used then?
That's how I cover that case:
mvn clean install -pl {couchdb|mongodb|...}
This is fast as there is no docs, dist etc. included in these modules. To
optionally also build core I do:
mvn clean install -pl {couchdb|mongodb|...} -am (for _a_lso _m_aking
dependencies)
Would a custom flag improve upon this?
b. Provide a -Dcomplete flag to run in case 3.
We might do that.
One shortcoming in Maven is though that one - afaik - can't enable profiles
using several properties. So having -Dcomplete (or -DskipAllExpensive if we
want to default the other way around) would mean that we can't skip single
things specifically (e.g. only skip docs). If we're ok with loosing that
granular level of control we can try that.
> 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.
How about
d. Use an alias for all skip options:
export mvnFast = "mvn -DskipITs -DskipDocs -DskipDistro"
This gives a quick build in one command and still allows for fine
granularity if needed.
> 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.
To me it should include everything by default (hence I'd prefer
-DskipAllExpensive over -Dcomplete) but if a majority of you guys prefer
another behavior I'd adapt.
> Thoughts?
> Emmanuel
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/hibernate-dev