You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/04/26 12:02:10 UTC

[maven-assembly-plugin] 01/01: Do not download whole universe

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

cstamas pushed a commit to branch do-not-download-whole-universe
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git

commit f3885e79d940e6cba310b7b9e745036236b0220c
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Apr 26 13:58:31 2022 +0200

    Do not download whole universe
    
    Problem: try to build maven master with empty repository,
    you will notice that we get things from repository.sonatype.org
    repository, that is wrong. Moreover, if you look carefully, you
    will notice that we download/resolve totally unrelated things
    to our build, like felix plugin etc. For fun, it downloads
    Maven 2.2.0, Maven 2.0.7 etc as well.
    
    Without PR:
    https://gist.github.com/cstamas/badb32a25dbe444679774611f61d94b1
    
    Reason: m-assembly-p "rebuilds" all the project of depSet to
    get MavenProject instance of them and transitive deps, but alas,
    it was doing it too eagerly: it was getting even plugins that
    built our dependendencies, while we are really not want them.
    So, instead to re-use the "project building request" of
    currently built project, just create a simple PBR that is
    tuned "just enough" to get results we want, nothing more.
    We do not want the plugins that built our dependencies.
    
    With PR:
    https://gist.github.com/cstamas/1e9dfd0384dceda7a8195edfc1bfb61b
---
 .../archive/task/AddDependencySetsTask.java        |  9 ++++++-
 .../archive/task/AddDependencySetsTaskTest.java    | 28 ++++++++++------------
 2 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
index 70aec22f..8644c44f 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTask.java
@@ -30,6 +30,7 @@ import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
@@ -43,6 +44,7 @@ import org.apache.maven.plugins.assembly.model.UnpackOptions;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.FilterUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
+import org.apache.maven.project.DefaultProjectBuildingRequest;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -181,7 +183,12 @@ public class AddDependencySetsTask extends ComponentSupport
 
     private ProjectBuildingRequest getProjectBuildingRequest( AssemblerConfigurationSource configSource )
     {
-        return configSource.getMavenSession().getProjectBuildingRequest();
+        MavenSession mavenSession = configSource.getMavenSession();
+        return new DefaultProjectBuildingRequest()
+                .setRepositorySession( mavenSession.getRepositorySession() )
+                .setSystemProperties( mavenSession.getSystemProperties() )
+                .setUserProperties( mavenSession.getUserProperties() )
+                .setProcessPlugins( false );
     }
 
     private boolean isUnpackWithOptions( DependencySet dependencySet )
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
index 1d316b1a..d327ac10 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java
@@ -62,6 +62,7 @@ import org.codehaus.plexus.archiver.ArchivedFileSet;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.FileSet;
+import org.eclipse.aether.RepositorySystemSession;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -128,7 +129,6 @@ public class AddDependencySetsTaskTest
         when( projectBuilder.build( any( Artifact.class ), any( ProjectBuildingRequest.class ) ) ).thenReturn( pbr );
 
         final MavenSession session = mock( MavenSession.class );
-        when( session.getProjectBuildingRequest() ).thenReturn( mock( ProjectBuildingRequest.class ) );
         when( session.getExecutionProperties() ).thenReturn( new Properties() );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -163,7 +163,7 @@ public class AddDependencySetsTaskTest
         verify( archiver ).setFileMode( 10 );
         verify( archiver ).setFileMode( 146 );
 
-        verify( session ).getProjectBuildingRequest();
+        verify( session ).getRepositorySession();
         verify( session, times( 2 ) ).getExecutionProperties();
         
         verify( projectBuilder ).build( any( Artifact.class ), any( ProjectBuildingRequest.class ) );
@@ -219,7 +219,6 @@ public class AddDependencySetsTaskTest
         when( projectBuilder.build( any(Artifact.class), any(ProjectBuildingRequest.class) ) ).thenThrow( pbe );
         
         final MavenSession session = mock( MavenSession.class );
-        when( session.getProjectBuildingRequest() ).thenReturn( mock( ProjectBuildingRequest.class ) );
         when( session.getExecutionProperties() ).thenReturn( new Properties() );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
@@ -248,7 +247,7 @@ public class AddDependencySetsTaskTest
         verify( archiver ).getOverrideDirectoryMode();
         verify( archiver ).getOverrideFileMode();
 
-        verify( session ).getProjectBuildingRequest();
+        verify( session ).getRepositorySession();
         verify( session, times( 2 ) ).getExecutionProperties();
 
         verify( projectBuilder ).build( any(Artifact.class), any(ProjectBuildingRequest.class) );
@@ -283,9 +282,12 @@ public class AddDependencySetsTaskTest
         ds.setDirectoryMode( Integer.toString( 10, 8 ) );
         ds.setFileMode( Integer.toString( 10, 8 ) );
 
+        final RepositorySystemSession repoSession = mock( RepositorySystemSession.class );
         final MavenSession session = mock( MavenSession.class );
-        when( session.getProjectBuildingRequest() ).thenReturn( mock( ProjectBuildingRequest.class ) );
+        when( session.getRepositorySession() ).thenReturn( repoSession );
         when( session.getExecutionProperties() ).thenReturn( new Properties() );
+        when( session.getSystemProperties() ).thenReturn( new Properties() );
+        when( session.getUserProperties() ).thenReturn( new Properties() );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
         when( configSource.getMavenSession() ).thenReturn( session );
@@ -336,7 +338,7 @@ public class AddDependencySetsTaskTest
         verify( archiver ).setDirectoryMode( 10 );
         verify( archiver ).setDirectoryMode( 146 );
         
-        verify( session ).getProjectBuildingRequest();
+        verify( session ).getRepositorySession();
         verify( session, atLeastOnce() ).getExecutionProperties();
         
         verify( projectBuilder ).build( any( Artifact.class ), any( ProjectBuildingRequest.class ) );
@@ -386,14 +388,13 @@ public class AddDependencySetsTaskTest
         Artifact am1 = mock( Artifact.class );
         when( am1.getGroupId() ).thenReturn( "group" );
         when( am1.getArtifactId() ).thenReturn( "artifact" );
-        when( am1.getId() ).thenReturn( "group:artifact:1.0:jar" );
+        when( am1.getBaseVersion() ).thenReturn( "version" );
         artifacts.add( am1 );
 
         Artifact am2 = mock( Artifact.class );
         when( am2.getGroupId() ).thenReturn( "group2" );
         when( am2.getArtifactId() ).thenReturn( "artifact2" );
-        when( am2.getId() ).thenReturn( "group2:artifact2:1.0:jar" );
-        when( am2.getDependencyConflictId() ).thenReturn( "group2:artifact2:jar" );
+        when( am2.getBaseVersion() ).thenReturn( "version" );
         artifacts.add( am2 );
 
         final DependencySet dependencySet = new DependencySet();
@@ -422,14 +423,13 @@ public class AddDependencySetsTaskTest
         Artifact am1 = mock( Artifact.class );
         when( am1.getGroupId() ).thenReturn( "group" );
         when( am1.getArtifactId() ).thenReturn( "artifact" );
-        when( am1.getId() ).thenReturn( "group:artifact:1.0:jar" );
+        when( am1.getBaseVersion() ).thenReturn( "version" );
         artifacts.add( am1 );
 
         Artifact am2 = mock( Artifact.class );
         when( am2.getGroupId() ).thenReturn( "group2" );
         when( am2.getArtifactId() ).thenReturn( "artifact2" );
-        when( am2.getId() ).thenReturn( "group2:artifact2:1.0:jar" );
-        when( am2.getDependencyConflictId() ).thenReturn( "group2:artifact2:jar" );
+        when( am2.getBaseVersion() ).thenReturn( "version" );
         artifacts.add( am2 );
 
         final DependencySet dependencySet = new DependencySet();
@@ -477,18 +477,16 @@ public class AddDependencySetsTaskTest
         final MavenProject project = new MavenProject( new Model() );
         project.setGroupId( "GROUPID" );
 
-        ProjectBuildingRequest pbReq  = mock( ProjectBuildingRequest.class );
         ProjectBuildingResult pbRes = mock( ProjectBuildingResult.class );
         when( pbRes.getProject() ).thenReturn( project );
 
         final ProjectBuilder projectBuilder = mock( ProjectBuilder.class );
-        when( projectBuilder.build( any( Artifact.class ), eq( pbReq ) ) ).thenReturn( pbRes );
+        when( projectBuilder.build( any( Artifact.class ), any( ProjectBuildingRequest.class ) ) ).thenReturn( pbRes );
 
         final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ),
                                                                       artifacts, project, projectBuilder );
 
         final MavenSession session = mock( MavenSession.class );
-        when( session.getProjectBuildingRequest() ).thenReturn( pbReq );
 
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
         when( configSource.getMavenSession() ).thenReturn( session );