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 16:34:56 UTC

[maven-assembly-plugin] branch MASSEMBLY-927 created (now 0a1aaad)

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

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


      at 0a1aaad  [MASSEMBLY-927] Support for properties mapping on executions of maven-assembly-plugin

This branch includes the following new commits:

     new 0a1aaad  [MASSEMBLY-927] Support for properties mapping on executions of maven-assembly-plugin

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-927] Support for properties mapping on executions of maven-assembly-plugin

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

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

commit 0a1aaada8a71334e1256587f91792b9807ae1b94
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Apr 26 18:34:19 2020 +0200

    [MASSEMBLY-927] Support for properties mapping on executions of maven-assembly-plugin
---
 .../assembly/AssemblerConfigurationSource.java     | 15 ++++++++---
 .../plugins/assembly/format/ReaderFormatter.java   |  8 +++---
 .../assembly/mojos/AbstractAssemblyMojo.java       | 13 ++++++++++
 .../assembly/format/ReaderFormatterTest.java       | 29 ++++++++++++++++++++++
 .../assembly/testutils/PojoConfigSource.java       | 23 ++++++++++++++---
 5 files changed, 77 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
index da038d6..ace04d2 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
@@ -19,6 +19,12 @@ package org.apache.maven.plugins.assembly;
  * under the License.
  */
 
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
+import javax.annotation.Nonnull;
+
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
@@ -26,10 +32,6 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.MavenReaderFilter;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 
-import javax.annotation.Nonnull;
-import java.io.File;
-import java.util.List;
-
 /**
  *
  */
@@ -114,6 +116,11 @@ public interface AssemblerConfigurationSource
      * @return The filters.
      */
     List<String> getFilters();
+    
+    /**
+     * @return the additional properties
+     */
+    Properties getAdditionalProperties();
 
     /**
      * @return include the project build filters or not.
diff --git a/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java b/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
index 4b26f35..f47a6fa 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java
@@ -37,6 +37,7 @@ import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Properties;
 import java.util.Set;
 
 /**
@@ -45,7 +46,8 @@ import java.util.Set;
 public class ReaderFormatter
 {
     private static Reader createReaderFilter( @Nonnull Reader source, String escapeString, List<String> delimiters,
-                                              AssemblerConfigurationSource configSource, boolean isPropertiesFile )
+                                              AssemblerConfigurationSource configSource, boolean isPropertiesFile,
+                                              Properties additionalProperties )
         throws IOException
     {
         try
@@ -53,7 +55,7 @@ public class ReaderFormatter
 
             MavenReaderFilterRequest filterRequest =
                 new MavenReaderFilterRequest( source, true, configSource.getProject(), configSource.getFilters(),
-                                              isPropertiesFile, configSource.getMavenSession(), null );
+                                              isPropertiesFile, configSource.getMavenSession(), additionalProperties );
             
             filterRequest.setEscapeString( escapeString );
 
@@ -154,7 +156,7 @@ public class ReaderFormatter
                             : new InputStreamReader( inputStream ); // wtf platform encoding ? TODO: Fix this
                         Reader filtered =
                             createReaderFilter( source, configSource.getEscapeString(), configSource.getDelimiters(),
-                                                configSource, isPropertyFile );
+                                                configSource, isPropertyFile, configSource.getAdditionalProperties() );
                         result = encoding != null
                             ? new ReaderInputStream( filtered, encoding )
                             : new ReaderInputStream( filtered );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index 2766a33..2999c8d 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -260,6 +260,14 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
      */
     @Parameter
     private List<String> filters;
+    
+    /**
+     * A set of additional properties to use for filtering
+     * 
+     * @since 3.3.0
+     */
+    @Parameter
+    private Properties additionalProperties;
 
     /**
      * If True (default) then the ${project.build.filters} are also used in addition to any further filters defined for
@@ -783,6 +791,11 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     {
         this.filters = filters;
     }
+    
+    public Properties getAdditionalProperties()
+    {
+        return additionalProperties;
+    }
 
     @Override
     public boolean isIncludeProjectBuildFilters()
diff --git a/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java b/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
index 51d0b93..d0279a7 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/format/ReaderFormatterTest.java
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.verify;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -33,6 +34,7 @@ import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.Properties;
 import java.util.Set;
 
 import org.apache.commons.io.IOUtils;
@@ -40,11 +42,14 @@ import org.apache.maven.model.Model;
 import org.apache.maven.plugins.assembly.testutils.PojoConfigSource;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.DefaultMavenReaderFilter;
+import org.apache.maven.shared.filtering.MavenReaderFilter;
+import org.apache.maven.shared.filtering.MavenReaderFilterRequest;
 import org.codehaus.plexus.archiver.resources.PlexusIoVirtualFileResource;
 import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
 import org.codehaus.plexus.components.io.resources.PlexusIoResource;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.junit.Test;
+import org.mockito.ArgumentCaptor;
 
 
 public class ReaderFormatterTest
@@ -99,6 +104,30 @@ public class ReaderFormatterTest
         assertThat( transformer.transform( resource, is ), not( sameInstance( is ) ) );
     }
 
+    @Test
+    public void additionalProperties() throws Exception
+    {
+        final MavenReaderFilter mavenReaderFilter = mock( MavenReaderFilter.class );
+
+        final PojoConfigSource cfg = getPojoConfigSource();
+        cfg.setMavenReaderFilter( mavenReaderFilter );
+        Properties additionalProperties = new Properties();
+        cfg.setAdditionalProperties( additionalProperties );
+        
+        InputStreamTransformer transformer =  ReaderFormatter.getFileSetTransformers( cfg, true, Collections.<String>emptySet(), "unix" );
+        
+        final InputStream inputStream = new ByteArrayInputStream( new byte[0] );
+        PlexusIoResource resource = mock( PlexusIoResource.class );
+        when( resource.getName() ).thenReturn( "file.txt" );
+
+        transformer.transform( resource, inputStream );
+
+        ArgumentCaptor<MavenReaderFilterRequest> filteringRequest = 
+                        ArgumentCaptor.forClass(MavenReaderFilterRequest.class);
+        verify( mavenReaderFilter ).filter( filteringRequest.capture() );
+        assertThat( filteringRequest.getValue().getAdditionalProperties(), sameInstance( additionalProperties ) );
+    }
+
     private MavenProject createBasicMavenProject()
     {
         final Model model = new Model();
diff --git a/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java b/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
index 75f501f..9325955 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/testutils/PojoConfigSource.java
@@ -18,6 +18,12 @@
  */
 package org.apache.maven.plugins.assembly.testutils;
 
+import java.io.File;
+import java.util.List;
+import java.util.Properties;
+
+import javax.annotation.Nonnull;
+
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.execution.MavenSession;
@@ -26,10 +32,6 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.filtering.MavenReaderFilter;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 
-import javax.annotation.Nonnull;
-import java.io.File;
-import java.util.List;
-
 public class PojoConfigSource
     implements AssemblerConfigurationSource
 {
@@ -88,6 +90,8 @@ public class PojoConfigSource
     private File archiveBaseDirectory;
 
     private List<String> filters;
+    
+    private Properties additionalProperties;
 
     private boolean isIncludeProjectBuildFilter;
 
@@ -291,6 +295,17 @@ public class PojoConfigSource
         this.filters = filters;
     }
 
+    @Override
+    public Properties getAdditionalProperties()
+    {
+        return additionalProperties;
+    }
+
+    public void setAdditionalProperties( Properties additionalProperties )
+    {
+        this.additionalProperties = additionalProperties;
+    }
+
     public boolean isIncludeProjectBuildFilters()
     {
         return isIncludeProjectBuildFilter;