You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/06/26 20:45:02 UTC

[maven] branch maven-3.8.x updated: [MNG-6843] Parallel build fails due to missing JAR artifacts in compilePath

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch maven-3.8.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.8.x by this push:
     new 76d5f0d  [MNG-6843] Parallel build fails due to missing JAR artifacts in compilePath
76d5f0d is described below

commit 76d5f0d942f52650d3bdf775b6af42d23d69066b
Author: Falko Modler <fa...@users.noreply.github.com>
AuthorDate: Fri Jun 25 19:28:40 2021 +0200

    [MNG-6843] Parallel build fails due to missing JAR artifacts in compilePath
    
    Signed-off-by: rfscholte <rf...@apache.org>
    (cherry picked from commit 73e00ed85df84ba0c557dd020740812b2453f2d3)
    
    This closes #482
---
 .../org/apache/maven/project/MavenProject.java     | 67 ++++++++++++----------
 1 file changed, 36 insertions(+), 31 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
index db0f4a9..157b7a0 100644
--- a/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
+++ b/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
@@ -92,13 +92,9 @@ import org.slf4j.LoggerFactory;
 public class MavenProject
     implements Cloneable
 {
-
     private static final Logger LOGGER = LoggerFactory.getLogger( MavenProject.class );
-
     public static final String EMPTY_PROJECT_GROUP_ID = "unknown";
-
     public static final String EMPTY_PROJECT_ARTIFACT_ID = "empty-project";
-
     public static final String EMPTY_PROJECT_VERSION = "0";
 
     private Model model;
@@ -111,10 +107,6 @@ public class MavenProject
 
     private Set<Artifact> resolvedArtifacts;
 
-    private ArtifactFilter artifactFilter;
-
-    private Set<Artifact> artifacts;
-
     private Artifact parentArtifact;
 
     private Set<Artifact> pluginArtifacts;
@@ -151,8 +143,13 @@ public class MavenProject
 
     private Artifact artifact;
 
-    // calculated.
-    private Map<String, Artifact> artifactMap;
+    private final ThreadLocal<ArtifactsHolder> threadLocalArtifactsHolder = new ThreadLocal()
+    {
+        protected ArtifactsHolder initialValue()
+        {
+            return new ArtifactsHolder();
+        }
+    };
 
     private Model originalModel;
 
@@ -185,11 +182,9 @@ public class MavenProject
     public MavenProject()
     {
         Model model = new Model();
-
         model.setGroupId( EMPTY_PROJECT_GROUP_ID );
         model.setArtifactId( EMPTY_PROJECT_ARTIFACT_ID );
         model.setVersion( EMPTY_PROJECT_VERSION );
-
         setModel( model );
     }
 
@@ -695,10 +690,11 @@ public class MavenProject
 
     public void setArtifacts( Set<Artifact> artifacts )
     {
-        this.artifacts = artifacts;
+        ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
+        artifactsHolder.artifacts = artifacts;
 
         // flush the calculated artifactMap
-        artifactMap = null;
+        artifactsHolder.artifactMap = null;
     }
 
     /**
@@ -711,34 +707,36 @@ public class MavenProject
      */
     public Set<Artifact> getArtifacts()
     {
-        if ( artifacts == null )
+        ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
+        if ( artifactsHolder.artifacts == null )
         {
-            if ( artifactFilter == null || resolvedArtifacts == null )
+            if ( artifactsHolder.artifactFilter == null || resolvedArtifacts == null )
             {
-                artifacts = new LinkedHashSet<>();
+                artifactsHolder.artifacts = new LinkedHashSet<>();
             }
             else
             {
-                artifacts = new LinkedHashSet<>( resolvedArtifacts.size() * 2 );
+                artifactsHolder.artifacts = new LinkedHashSet<>( resolvedArtifacts.size() * 2 );
                 for ( Artifact artifact : resolvedArtifacts )
                 {
-                    if ( artifactFilter.include( artifact ) )
+                    if ( artifactsHolder.artifactFilter.include( artifact ) )
                     {
-                        artifacts.add( artifact );
+                        artifactsHolder.artifacts.add( artifact );
                     }
                 }
             }
         }
-        return artifacts;
+        return artifactsHolder.artifacts;
     }
 
     public Map<String, Artifact> getArtifactMap()
     {
-        if ( artifactMap == null )
+        ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
+        if ( artifactsHolder.artifactMap == null )
         {
-            artifactMap = ArtifactUtils.artifactMapByVersionlessId( getArtifacts() );
+            artifactsHolder.artifactMap = ArtifactUtils.artifactMapByVersionlessId( getArtifacts() );
         }
-        return artifactMap;
+        return artifactsHolder.artifactMap;
     }
 
     public void setPluginArtifacts( Set<Artifact> pluginArtifacts )
@@ -1433,8 +1431,9 @@ public class MavenProject
     public void setResolvedArtifacts( Set<Artifact> artifacts )
     {
         this.resolvedArtifacts = ( artifacts != null ) ? artifacts : Collections.<Artifact>emptySet();
-        this.artifacts = null;
-        this.artifactMap = null;
+        ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
+        artifactsHolder.artifacts = null;
+        artifactsHolder.artifactMap = null;
     }
 
     /**
@@ -1447,9 +1446,10 @@ public class MavenProject
      */
     public void setArtifactFilter( ArtifactFilter artifactFilter )
     {
-        this.artifactFilter = artifactFilter;
-        this.artifacts = null;
-        this.artifactMap = null;
+        ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
+        artifactsHolder.artifactFilter = artifactFilter;
+        artifactsHolder.artifacts = null;
+        artifactsHolder.artifactMap = null;
     }
 
     /**
@@ -1844,7 +1844,6 @@ public class MavenProject
         {
             reportArtifactMap = ArtifactUtils.artifactMapByVersionlessId( getReportArtifacts() );
         }
-
         return reportArtifactMap;
     }
 
@@ -1869,7 +1868,6 @@ public class MavenProject
         {
             extensionArtifactMap = ArtifactUtils.artifactMapByVersionlessId( getExtensionArtifacts() );
         }
-
         return extensionArtifactMap;
     }
 
@@ -1991,4 +1989,11 @@ public class MavenProject
     {
         this.projectBuilderConfiguration = projectBuildingRequest;
     }
+
+    private static class ArtifactsHolder
+    {
+        private ArtifactFilter artifactFilter;
+        private Set<Artifact> artifacts;
+        private Map<String, Artifact> artifactMap;
+    }
 }