You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2019/04/14 17:49:29 UTC
[maven] branch MNG-6638 created (now 542a9f9)
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a change to branch MNG-6638
in repository https://gitbox.apache.org/repos/asf/maven.git.
at 542a9f9 [MNG-6638] - Prevent reparsing POMs in MavenMetadataSource
This branch includes the following new commits:
new 542a9f9 [MNG-6638] - Prevent reparsing POMs in MavenMetadataSource
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven] 01/01: [MNG-6638] - Prevent reparsing POMs in
MavenMetadataSource
Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch MNG-6638
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 542a9f950d3111f80f0ba5823bbfe28bb500d85a
Author: Stefan Oehme <st...@gmail.com>
AuthorDate: Sun Apr 14 13:47:05 2019 +0200
[MNG-6638] - Prevent reparsing POMs in MavenMetadataSource
If a dependency on another project is found, don't parse its
POM again, but instead use the model we already have in memory.
This saves a large amount of time and memory for builds that have
lots of subprojects and dependencies between them.
The approach was directly copied from DefaultArtifactDescriptorReader,
which does the same optimization.
---
.../project/artifact/MavenMetadataSource.java | 22 +++++++++++++++++++---
.../internal/DefaultArtifactDescriptorReader.java | 1 -
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
index 2dc9372..d89d516 100644
--- a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
+++ b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
@@ -32,6 +32,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import org.apache.maven.RepositoryUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
@@ -56,6 +57,7 @@ import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Model;
import org.apache.maven.model.Relocation;
import org.apache.maven.model.building.ModelBuildingException;
import org.apache.maven.model.building.ModelBuildingRequest;
@@ -69,6 +71,7 @@ import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.properties.internal.EnvironmentUtils;
import org.apache.maven.properties.internal.SystemProperties;
+import org.apache.maven.repository.internal.MavenWorkspaceReader;
import org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest;
import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest;
import org.codehaus.plexus.PlexusContainer;
@@ -78,6 +81,7 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupExcepti
import org.codehaus.plexus.logging.Logger;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RepositoryPolicy;
+import org.eclipse.aether.repository.WorkspaceReader;
import org.eclipse.aether.transfer.ArtifactNotFoundException;
/**
@@ -175,9 +179,21 @@ public class MavenMetadataSource
Artifact relocatedArtifact = null;
- //TODO Not even sure this is really required as the project will be cached in the builder, we'll see this
- // is currently the biggest hotspot
- if ( artifact instanceof ArtifactWithDependencies )
+ final WorkspaceReader workspace = legacySupport.getRepositorySession().getWorkspaceReader();
+ Model model = null;
+ if ( workspace instanceof MavenWorkspaceReader )
+ {
+ model = ( (MavenWorkspaceReader) workspace ).findModel( RepositoryUtils.toArtifact( artifact ) );
+ }
+
+ if ( model != null )
+ {
+ pomArtifact = artifact;
+ dependencies = model.getDependencies();
+ DependencyManagement dependencyManagement = model.getDependencyManagement();
+ managedDependencies = dependencyManagement == null ? null : dependencyManagement.getDependencies();
+ }
+ else if ( artifact instanceof ArtifactWithDependencies )
{
pomArtifact = artifact;
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
index 4f464ea..586c83e 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
@@ -257,7 +257,6 @@ public class DefaultArtifactDescriptorReader
Model model;
- // hack: don't rebuild model if it was already loaded during reactor resolution
final WorkspaceReader workspace = session.getWorkspaceReader();
if ( workspace instanceof MavenWorkspaceReader )
{