diff --git a/maven-core/src/main/java/org/apache/maven/extension/lineage/DefaultModelLineageBuilder.java b/maven-core/src/main/java/org/apache/maven/extension/lineage/DefaultModelLineageBuilder.java index 5c7396edfc..7481d60054 100644 --- a/maven-core/src/main/java/org/apache/maven/extension/lineage/DefaultModelLineageBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/extension/lineage/DefaultModelLineageBuilder.java @@ -35,6 +35,7 @@ import org.apache.maven.profiles.build.ProfileAdvisor; import org.apache.maven.project.ProjectBuilderConfiguration; import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.ModelAndFile; +import org.apache.maven.project.workspace.ProjectWorkspace; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.console.ConsoleLogger; @@ -68,6 +69,8 @@ public class DefaultModelLineageBuilder private ProfileAdvisor profileAdvisor; + private ProjectWorkspace projectWorkspace; + private Logger logger; public DefaultModelLineageBuilder() @@ -96,7 +99,12 @@ public class DefaultModelLineageBuilder List currentRemoteRepositories = remoteRepositories == null ? new ArrayList() : new ArrayList( remoteRepositories ); - ModelAndFile current = new ModelAndFile( readModel( pom ), pom, isReactorProject ); + ModelAndFile current = projectWorkspace.getModelAndFile( pom ); + if ( current == null ) + { + current = new ModelAndFile( readModel( pom ), pom, isReactorProject ); + projectWorkspace.storeModelAndFile( current ); + } do { @@ -306,6 +314,7 @@ public class DefaultModelLineageBuilder // getLogger().debug( "Checking cache for parent model-and-file instance: " + key + " using file: " + parentPomFile ); + result = projectWorkspace.getModelAndFile( parentPomFile ); if ( result != null && !parentModelMatches( modelParent, result.getModel() ) ) { parentPomFile = null; @@ -313,6 +322,13 @@ public class DefaultModelLineageBuilder } } + if ( result == null ) + { +// getLogger().debug( "Checking cache for parent model-and-file instance: " + key + " using project groupId:artifactId:version." ); + + result = projectWorkspace.getModelAndFile( modelParent.getGroupId(), modelParent.getArtifactId(), modelParent.getVersion() ); + } + if ( result != null ) { // getLogger().debug( "Returning cached instance." ); @@ -405,6 +421,12 @@ public class DefaultModelLineageBuilder } } + if ( result != null ) + { +// getLogger().debug( "Caching parent model-and-file: " + result ); + projectWorkspace.storeModelAndFile( result ); + } + return result; }