You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Rohit Iyer <ca...@gmail.com> on 2016/05/22 06:39:00 UTC

How to Override Maven -T behavior

Hi,

We are looking for ways to optimize the build time for our project which
has about 36 modules. The Dependency hierarchy takes us to a tree of 10
levels of nodes and some of the modules need mock server testing which runs
on the same port and parallel tests fail when two modules need the mock
server at the same time.

We are exploring alternative to:

1. version project to a temporary version
2. Trigger fast build using -T (skip test=true) which also installs the
artifact to local repo.
3. Then run -T using our own project module order which no longer requires
dependencies because they are available and we can guarantee N/C times
improvement where C is number of available cores.  This helps us avoid the
mock server dependency if we ensure all of them run in the same thread
/core sequentially.

Can you suggest to us which plugin we need to modify and use?

Thanks
Rohit

Re: How to Override Maven -T behavior

Posted by Karl Heinz Marbaise <kh...@gmx.de>.
Hi,

On 5/22/16 8:39 AM, Rohit Iyer wrote:
> Hi,
>
> We are looking for ways to optimize the build time for our project which
> has about 36 modules. The Dependency hierarchy takes us to a tree of 10
> levels of nodes and some of the modules need mock server testing which runs
> on the same port and parallel tests fail when two modules need the mock
> server at the same time.

First 36 Modules is a small build (I'm on projects with 500 modules 
which took about 15 mins with 10000 unit tests but only has 5 levels and 
around 750,000 lines of code)...furthermore what do you mean by 
optimize? In which way? Time ?

How long does it take? Build Time / Test Time etc. How many lines of 
code do you have ? The number of tests?

Apart from that the dependency hierarchy based on the interdependencies 
between the modules you have? Or do you mean the dependencies the module 
have ?

Do your mock server tests run in test life cycle or shouldn't they run 
in integration-test phase (pre-integration-test, integration-test, 
post-integration-test)? By default integration tests can't be parallized 
..unit tests can cause they are independent...

If you really have 10 levels for 36 modules sounds like your 
architecture could be improved ?...

>
> We are exploring alternative to:
>
> 1. version project to a temporary version

What do you mean by that?


> 2. Trigger fast build using -T (skip test=true) which also installs the
> artifact to local repo.


> 3. Then run -T using our own project module order which no longer requires
> dependencies because they are available and we can guarantee N/C times
> improvement where C is number of available cores.

Why are you trying to handle the order manually does not make sense 
maven takes care of that...

And you should be aware that there is a tradeoff between the number of 
cores and the time a build take ...for example:

mvn -T 2 ..

speed time up

mvn -T 10 ...

get slower...

so the optimal way is somewhere between those values...


 >
   This helps us avoid the
> mock server dependency if we ensure all of them run in the same thread
> /core sequentially.

Mock server sounds like integration tests which either shouldn't be run 
at that time or the tests or the mock server must handle that to use 
different ports...but this is an indicator that those tests are 
integration tests..


So i would suggest to separate unit/integration test by using the 
correct plugins/phase (maven-surefire-plugin for unit tests and 
maven-failsafe-plugin for running integration tests following the naming 
conventions or may be it's needed to have separated modules which 
contain the integration tests (sometimes usefull)...)..

May be it's also worth to think about running only compiling etc. and 
unit tests in one and separating the integration tests into a different 
run...

A CI Server is very helpfull in such situations...also using pipelines...



>
> Can you suggest to us which plugin we need to modify and use?



>
> Thanks
> Rohit
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org