Bug 515668 - Introduce APIs to group MavenProject reads

Using ProjectBuilder.build(singlePom...) has a speed and memory
complexity of O(depth(project)) where depth(project) is the number of
parents (recursively). Iterating on this over N projects lead to a
pseudo-quadratic cost O(N*maxProjectDepth) where maxProjectDepth can be
up to N-1.

Instead, we introduce APIs that take advantage
ProjectBuilder.build(multiplePom...) which has a complexity of O(N).

For Apache Camel that is 700+ modules, these new APIs instantiate  700+
MavenProject instead of ~4000 (since many modules have a depth of 5/6)
like legacy API do.

Change-Id: Ica74542eb8db6833de3b796bfad8c07c2ae9b002
Signed-off-by: Mickael Istria <mistria@redhat.com>
3 files changed