Thanks for your input! Baptiste MATHUS wrote: > Didn't dig on that very subject, but IIRC, kind of. Parent > pom could sometime be downloaded although it *was* part of > the reactor. > Being more explicit and less permissive is one of the > features of m3 (as is the build reproducibility for maven > in general).
Stephen Connolly wrote: > IIRC another issue was that if the "parent" from the > reactor has a different version from the parent specified > in the pom, Maven 2.x just uses the one from the reactor > while with this fix Maven 3.x will correctly attempt to > download and use the specified version from the remote > repository / local cache > > I have not tested if this change allows Maven 3 to have > two different versions of the same GA within the one > reactor... but irrespective of that issue it does allow the > parent version to be disconnected from the version picked > up by "child" poms I can't say I have tested a lot of corner cases with Maven 2, my experience has been that our project layout "just worked" with it. Thus, I can't back up any statement that Maven 2 had a perfect implementation of parent/reactor handling, so this is not what I am saying. But from what has been mentioned so far in this thread, it seems the problems at hand were more about Maven 2 bugs rather than a mathematically indeterministic project dependency model. Please correct me if I missed something pointing to this in your previous comments. The mental contract I perceived Maven 2 was promising was "related modules found by the reactor in your local checkout will take precedence over modules in repo" where "related modules" means every kind of artefact reference using groupId/artifactId/version, including parent poms. I believe it is quite possible to make an algorithm that produces deterministic builds based on this contract, while not resorting to explicit filesystem references. The relativePath element is for sure a way to improve consistency when building in isolation but why not leave it at that, instead of crippling reactor builds at the same time? With the current design, Maven 3's mental contract for module references is broken, and to make it consistent it would really require relativePath elements also on dependencies when it is desired to reference the local checkout. That would improve consistency even further when building in isolation, but is something I would desire just as little as I desire this behaviour for parents. Are there any possibilities for: - changing Maven 3 to find parents in reactor by default - changing Maven 3 to find parents in reactor in an opt-in mode - tweaking Maven ourself through settings or plugins to have it find parents through reactor ? Best regards Mike --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
