Same use case for me. 

Most of the time users work on single module. 
But we also create artificially (using svn:externals) big multimodule 
builds with an aggregator pom. This is to allow a full clean build on CI 
platform. relativePath is set to empty in order to avoid maven complains when 
working on a single component. So in our big build we have A, B and C in this 
order where B is parent of A and C. Doing mvn clean install, A 
will get old parent from repo (when available) while C will get newest 
parent that was installed just before. I feel reordering reactor by 
taking parent relationship into account can solve this issue.

Regards

Julien


----- Mail original -----
> De : Laird Nelson <ljnel...@gmail.com>
> À : Maven Users List <users@maven.apache.org>
> Cc : 
> Envoyé le : Lundi 22 Août 2011 17h38
> Objet : Re: Reactor doesn't build parent poms first?
> 
> On Mon, Aug 22, 2011 at 11:22 AM, Benson Margulies 
> <bimargul...@gmail.com>wrote:
> 
>>  I'm foggy on one point here. How can the pom in the reactor differ
>>  from the pom reached by relative path? Different property
>>  substitutions? Or is the issue here the case in which there is no rel
>>  path, but it is in the reactor?
>> 
> 
> (I'll quickly chime in with my background use case--or at least the reason
> why I brought up all this stuff initially.)
> 
> In my organization we have lots of modules.  Developers typically only work
> on a given module at a time.  We've set things up in a pretty standard
> fashion so that they can check that module out and work on it without having
> to check out the other modules.  We've got Nexus proxying various
> repositories; all artifacts that are depended upon basically get downloaded
> through that.  Standard Maven stuff.
> 
> Of course, the developers often do have the whole project checked out.  That
> used to cause some weird problems, detailed below.
> 
> Some of our modules have parents that are other modules.  So we have a
> standard -pomtypes-jpa module, for example, that does some stuff in its
> <build> section to do things like generate the list of entity classes that
> should be included in a persistence.xml during unit/integration testing.
> Other modules may extend this as their parent to pick up this behavior.
> 
> Occasionally, we need to make changes to these mid-level modules.
> 
> Back in the day, we had a bunch of relativePath elements.  But developers
> were getting confused, because if they were working on a JPA module that
> inherited from this -pomtypes-jpa module, then if they hadn't
> version-control-updated their -pomtypes-jpa module, the relativePath element
> would kick in and try to use the working copy in their workspace.  Oops.
> 
> The solution in this case was: if you have the -pomtypes-jpa module checked
> out, make sure you svn update it religiously so that when relativePath finds
> it, you're getting the most recent copy from Subversion.
> 
> OK, fine, so we finally decided, forget this, the relativePath element is
> kind of a hack anyway (or at least didn't fit our needs at all).  So now all
> pom resolution comes from the repository.  That's cool; that's like 
> every
> other Maven artifact.  Smooth sailing.  We update the -pomtypes-jpa pom.xml,
> and all children who extend it pick it up automatically (we're still in
> SNAPSHOT mode).
> 
> However, this is kind of odd when we're doing a full build.  Suppose one of
> these developers hasn't done a full build in ages and ages.  Or, for that
> matter, hasn't worked on a JPA module, so hasn't caused Maven to go look 
> for
> a new SNAPSHOT version of that -pomtypes-jpa project.
> 
> Now, when we execute that full build right after a global svn update, the
> full build will go use the (comparatively ancient) 1.0-SNAPSHOT version of
> -pomtypes-jpa's pom.xml from the local repository (or the remote), which is,
> of course, the most recent *deployed* version, but might very well not be
> the most recent version *in Subversion* that they just checked out to their
> workspace.  Really since we're doing a full build, we'd like it to
> use...well, the one that should be built right now.  :-)  We would like it
> to realize that one of the artifacts that a module extends from is actually
> *in the build plan currently being executed*, so gee, it would be nice if
> Maven would sort it all the way up in the topologically sorted list of
> reactor projects.  Obviously it could potentially affect property
> substitution and the like for child poms, so you'd want to make sure this
> thing was built first.
> 
> Maybe that's all backwards and wrong-headed, but it's where I was coming
> from.  One "customer"'s input.
> 
> The workaround for us is to wrap Maven so that we do mvn -o clean install on
> the parent poms first, in topological order, then run mvn clean install from
> the root.  I was looking for this sort of thing to be handled natively by
> the reactor.
> 
> Best,
> Laird
> 
> --
> http://about.me/lairdnelson
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to