You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/04/26 14:26:07 UTC

[maven-assembly-plugin] branch MASSEMBLY-879 created (now 8054f50)

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

rfscholte pushed a change to branch MASSEMBLY-879
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git.


      at 8054f50  [MASSEMBLY-879] useDefaultExcludes has no effect in dependencySet/unpack

This branch includes the following new commits:

     new 8054f50  [MASSEMBLY-879] useDefaultExcludes has no effect in dependencySet/unpack

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-assembly-plugin] 01/01: [MASSEMBLY-879] useDefaultExcludes has no effect in dependencySet/unpack

Posted by rf...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MASSEMBLY-879
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git

commit 8054f5097c890e8cc736f706ccc22db69684ddcd
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Apr 26 16:24:46 2020 +0200

    [MASSEMBLY-879] useDefaultExcludes has no effect in dependencySet/unpack
---
 .../assembly/archive/task/AddArtifactTask.java     |  9 +++
 .../archive/task/AddDependencySetsTask.java        |  1 +
 .../archive/task/AddDependencySetsTaskTest.java    | 86 +++++++++++++++++++---
 3 files changed, 86 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
index 408d24d..6a281e7 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTask.java
@@ -66,6 +66,8 @@ public class AddArtifactTask
 
     private List<String> excludes;
 
+    private boolean usingDefaultExcludes = true;
+
     private MavenProject project;
 
     private MavenProject moduleProject;
@@ -217,6 +219,7 @@ public class AddArtifactTask
                 fs.setExcludes( excludesArray );
                 fs.setPrefix( outputLocation );
                 fs.setStreamTransformer( transformer );
+                fs.setUsingDefaultExcludes( usingDefaultExcludes );
                 archiver.addFileSet( fs );
             }
             else
@@ -231,6 +234,7 @@ public class AddArtifactTask
                 afs.setExcludes( excludesArray );
                 afs.setPrefix( outputLocation );
                 afs.setStreamTransformer( transformer );
+                afs.setUsingDefaultExcludes( usingDefaultExcludes );
                 archiver.addArchivedFileSet( afs, encoding );
             }
         }
@@ -283,6 +287,11 @@ public class AddArtifactTask
         this.excludes = excludes;
     }
 
+    public void setUsingDefaultExcludes( boolean usingDefaultExcludes )
+    {
+        this.usingDefaultExcludes = usingDefaultExcludes;
+    }
+
     public void setIncludes( final List<String> includes )
     {
         this.includes = includes;
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 ba11f00..f99aa27 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
@@ -261,6 +261,7 @@ public class AddDependencySetsTask
         {
             task.setIncludes( opts.getIncludes() );
             task.setExcludes( opts.getExcludes() );
+            task.setUsingDefaultExcludes( opts.isUseDefaultExcludes() );
         }
 
         task.execute( archiver, configSource );
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 654ffba..064868f 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
@@ -19,17 +19,29 @@ package org.apache.maven.plugins.assembly.archive.task;
  * under the License.
  */
 
+import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
-import static org.mockito.Mockito.any;
+import static org.junit.Assert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.isNull;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Properties;
+import java.util.Set;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.execution.MavenSession;
@@ -40,6 +52,7 @@ import org.apache.maven.plugins.assembly.archive.ArchiveCreationException;
 import org.apache.maven.plugins.assembly.archive.DefaultAssemblyArchiverTest;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.model.DependencySet;
+import org.apache.maven.plugins.assembly.model.UnpackOptions;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -48,22 +61,16 @@ import org.apache.maven.project.ProjectBuildingResult;
 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.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Properties;
-import java.util.Set;
-
 @RunWith( MockitoJUnitRunner.class )
 public class AddDependencySetsTaskTest
 {
@@ -456,4 +463,63 @@ public class AddDependencySetsTaskTest
         assertSame( am1, result.iterator().next() );
     }
 
+    // MASSEMBLY-879
+    @Test
+    public void useDefaultExcludes() throws Exception 
+    {
+        Artifact zipArtifact = mock( Artifact.class );
+        when( zipArtifact.getGroupId() ).thenReturn( "some-artifact" );
+        when( zipArtifact.getArtifactId() ).thenReturn( "of-type-zip" );
+        when( zipArtifact.getId() ).thenReturn( "some-artifact:of-type-zip:1.0:zip" );
+        when( zipArtifact.getFile() ).thenReturn( temporaryFolder.newFile( "of-type-zip.zip" ) );
+
+        Artifact dirArtifact = mock( Artifact.class );
+        when( dirArtifact.getGroupId() ).thenReturn( "some-artifact" );
+        when( dirArtifact.getArtifactId() ).thenReturn( "of-type-zip" );
+        when( dirArtifact.getId() ).thenReturn( "some-artifact:of-type-zip:1.0:dir" );
+        when( dirArtifact.getFile() ).thenReturn( temporaryFolder.newFolder( "of-type-zip" ) );
+
+        final Set<Artifact> artifacts = new HashSet<>( Arrays.asList( zipArtifact, dirArtifact ) );
+
+        final DependencySet dependencySet = new DependencySet();
+        dependencySet.setUseProjectArtifact( false );
+        dependencySet.setIncludes( Collections.singletonList( "some-artifact:of-type-zip" ) );
+        dependencySet.setOutputDirectory( "MyOutputDir" );
+        dependencySet.setUnpack( true );
+        UnpackOptions unpackOptions = new UnpackOptions();
+        unpackOptions.setUseDefaultExcludes( false );
+        dependencySet.setUnpackOptions( unpackOptions );
+
+        final MavenProject project = new MavenProject( new Model() );
+
+        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 );
+
+        final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ),
+                                                                      artifacts, project, projectBuilder, mock( Logger.class ) );
+
+        final MavenSession session = mock( MavenSession.class );
+        when( session.getProjectBuildingRequest() ).thenReturn( pbReq );
+
+        final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
+        when( configSource.getMavenSession() ).thenReturn( session );
+        DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
+
+        final Archiver archiver = mock( Archiver.class );
+
+        task.addDependencySet( dependencySet, archiver, configSource );
+
+        ArgumentCaptor<ArchivedFileSet> archivedFileSet = ArgumentCaptor.forClass( ArchivedFileSet.class );
+        verify( archiver ).addArchivedFileSet( archivedFileSet.capture(), isNull( Charset.class ) );
+        assertThat( archivedFileSet.getValue().isUsingDefaultExcludes(), is( false ) );
+
+        ArgumentCaptor<FileSet> fileSet = ArgumentCaptor.forClass( FileSet.class );
+        verify( archiver ).addFileSet( fileSet.capture() );
+        assertThat( fileSet.getValue().isUsingDefaultExcludes(), is( false ) );
+    }
+
 }