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 )
           {
  
  
  

Reply via email to