[ 
http://jira.codehaus.org/browse/MNG-4962?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=250780#action_250780
 ] 

John Casey commented on MNG-4962:
---------------------------------

Digging into this a bit further, it seems that 
DefaultModelBuilder.importDependencyManagement(..) is called twice when running 
release:prepare. The first time is as a result of the 
DefaultMaven.collectProjects(..) execution, where the complete list of project 
files is used to build up an effective reactor model cache. 

The second time is a result of MavenProject.getParent(), which uses the 
ProjectBuildingRequest stored in the MavenProject instance, and has no notion 
of other models available in the reactor. It seems like this is a special 
problem when it comes to loading import-scoped dependencies, since they have no 
relative path attached to them. With no relative path to use in reconstructing 
a reactor path, and no cached model for the BOM, parent POMs referencing BOMs 
in the same reactor will fail to build.

Another symptom of this problem is that the failure to build the parent 
MavenProject instance on-demand will be visible only in the great wash of 
output that is the debug log-level. In other words, it will not prevent the 
build from progressing, in spite of the fact that an explicit call has to be 
made requesting this information in order to trigger the failure...which IMO by 
default we should assume is critical to the build's progress. If this call is 
made and the parent-project construction fails, the caller should be given the 
opportunity to handle the exception.

> release:prepare with reactor BOM referenced from reactor parent POM results 
> in child with unchanged parent version
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: MNG-4962
>                 URL: http://jira.codehaus.org/browse/MNG-4962
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Reactor and workspace
>    Affects Versions: 3.0, 3.0.1, 3.0.2
>            Reporter: John Casey
>         Attachments: release-parent-adjustment.zip, test.git.zip
>
>
> I'm attaching a sample project that displays the behavior.
> Essentially, the project structure is a multimodule project with two levels 
> of parent POMs, not unlike the structure found in maven-scm or similar. There 
> is also a top-level submodule that is just a Bill-of-Materials POM, named - 
> 'bom'. The second-level parent POM, named 'children' imports 'bom', and is 
> inherited by the 'child1' submodule.
> When release:prepare is run, the POMs are transformed on disk, it seems to 
> trigger a re-resolution of the 'child1' parent reference - the 
> MavenProject.getParent() call triggers the ProjectBuilder.build(...) to 
> retrieve the 'children' POM. When this happens, the process of building the 
> 'children' POM results in trying to locate the 'bom' POM. HOWEVER, at this 
> point there is no reactor cache at all, much less one that contains the 
> proper coordinate for the transformed BOM. This means the 
> project-construction for 'children' fails, and the parent reference in the 
> 'child1' MavenProject instance is null...which means the release plugin's 
> check of MavenProject.hasParent() returns false, and the <parent/> reference 
> doesn't get updated.
> I haven't dug deeper than this, so I'm not sure how the reactor cache is 
> lost, or how it was ever preserved so that the MavenProject.getParent() call 
> could succeed under normal circumstances.
> I know that the <parent/> update works in this scenario when using Maven 
> 2.2.1, though I haven't done the debugging to know exactly why. I'm guessing 
> it's taking advantage of a higher-level cache within the MavenProjectBuilder 
> itself to avoid losing track of the parents. I also know that it eagerly 
> builds/resolves/associates parent MavenProject instances, so maybe that has 
> something to do with it.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to