jdcasey 2005/04/07 14:52:17
Modified: maven-core/src/main/java/org/apache/maven/project DefaultMavenProjectBuilder.java maven-core/src/main/java/org/apache/maven/artifact MavenMetadataSource.java Log: Commented out use of cached model in MavenMetadataSource, as this is causing problems with projects that depend on other projects which use managed dependencies. Revision Changes Path 1.63 +15 -3 maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Index: DefaultMavenProjectBuilder.java =================================================================== RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 --- DefaultMavenProjectBuilder.java 6 Apr 2005 01:28:29 -0000 1.62 +++ DefaultMavenProjectBuilder.java 7 Apr 2005 21:52:17 -0000 1.63 @@ -164,11 +164,23 @@ throws ProjectBuildingException, ModelInterpolationException, ArtifactResolutionException { Model model = project.getModel(); - String key = createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ); - Model cachedModel = (Model) modelCache.get( key ); + + String cacheKey = createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ); + + // [jc] This needs to be moved below the interpolation and defaults + // injection steps, especially since the interpolator returns a different + // instance of the Model. HOWEVER, I cannot move this caching step to + // the appropriate place, since it results in inconsistent artifact + // naming between the jar:jar and install:install steps for some reason. + // + // So, instead I'm commenting out the part of the MavenMetadataSource + // that looks up the cached model, and leaving this caching step right + // here...at least until I have more time to look at why this cannot be + // moved down. + Model cachedModel = (Model) modelCache.get( cacheKey ); if ( cachedModel == null || sourceProject ) { - modelCache.put( key, model ); + modelCache.put( cacheKey, model ); } model = modelInterpolator.interpolate( model ); 1.27 +24 -10 maven-components/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java Index: MavenMetadataSource.java =================================================================== RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/artifact/MavenMetadataSource.java,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- MavenMetadataSource.java 6 Apr 2005 07:38:14 -0000 1.26 +++ MavenMetadataSource.java 7 Apr 2005 21:52:17 -0000 1.27 @@ -73,15 +73,29 @@ { List dependencies = null; - if ( mavenProjectBuilder != null ) - { - Model model = mavenProjectBuilder.getCachedModel( artifact.getGroupId(), artifact.getArtifactId(), - artifact.getVersion() ); - if ( model != null ) - { - dependencies = model.getDependencies(); - } - } + // [jc] Commenting this out, because the place where the model is + // cached in the project builder has not accounted for interpolation or + // defaults injection. This wouldn't be a problem, except that the + // interpolation step actually returns a different instance of the + // model than was input, thus rendering the old version of the model + // stale. To test this, you have to create an artifact whose pom uses + // managed dependencies, then depend on that artifact from another + // project. The first plugin to refer to this dependency will work fine, + // but subsequent plugins referring to the dep will retrieved a cached + // copy of the model that has no versions, etc. defined because that + // model instance has not had defaults injected or interpolations + // resolved. See note in DefaultMavenProjectBuilder, line 170 for + // further discussion. + +// if ( mavenProjectBuilder != null ) +// { +// Model model = mavenProjectBuilder.getCachedModel( artifact.getGroupId(), artifact.getArtifactId(), +// artifact.getVersion() ); +// if ( model != null ) +// { +// dependencies = model.getDependencies(); +// } +// } if ( dependencies == null ) {