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/18 11:35:17 UTC

[maven-assembly-plugin] branch master updated: [MASSEMBLY-922] allow to override UID/GID for files stored in TAR

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 6144d7a  [MASSEMBLY-922] allow to override UID/GID for files stored in TAR
6144d7a is described below

commit 6144d7afe3f67b57297cad5b55e670d640e4ebd9
Author: Václav Haisman <vh...@gmail.com>
AuthorDate: Sat Apr 18 13:35:11 2020 +0200

    [MASSEMBLY-922] allow to override UID/GID for files stored in TAR
---
 .../assembly/AssemblerConfigurationSource.java     | 20 +++++++++
 .../assembly/archive/DefaultAssemblyArchiver.java  | 18 ++++++++
 .../assembly/mojos/AbstractAssemblyMojo.java       | 49 ++++++++++++++++++++++
 .../archive/DefaultAssemblyArchiverTest.java       | 33 +++++++++++++++
 .../assembly/testutils/PojoConfigSource.java       | 24 +++++++++++
 5 files changed, 144 insertions(+)

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 ebadd22..da038d6 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
@@ -209,4 +209,24 @@ public interface AssemblerConfigurationSource
 
     @Nonnull
     FixedStringSearchInterpolator getMainProjectInterpolator();
+
+    /**
+     * @return Override UID.
+     */
+    Integer getOverrideUid();
+
+    /**
+     * @return Override user name.
+     */
+    String getOverrideUserName();
+
+    /**
+     * @return Override GID.
+     */
+    Integer getOverrideGid();
+
+    /**
+     * @return Override group name.
+     */
+    String getOverrideGroupName();
 }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
index 6ee3e4c..195aea2 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
@@ -62,6 +62,7 @@ import org.codehaus.plexus.context.Context;
 import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -353,6 +354,23 @@ public class DefaultAssemblyArchiver
             archiver.configureReproducible( outputTimestamp );
         }
 
+        if ( configSource.getOverrideUid() != null )
+        {
+            archiver.setOverrideUid( configSource.getOverrideUid() );
+        }
+        if ( StringUtils.isNotBlank( configSource.getOverrideUserName() ) )
+        {
+            archiver.setOverrideUserName( StringUtils.trim( configSource.getOverrideUserName() ) );
+        }
+        if ( configSource.getOverrideGid() != null )
+        {
+            archiver.setOverrideGid( configSource.getOverrideGid() );
+        }
+        if ( StringUtils.isNotBlank( configSource.getOverrideGroupName() ) )
+        {
+            archiver.setOverrideGroupName( StringUtils.trim( configSource.getOverrideGroupName() ) );
+        }
+
         return archiver;
     }
 
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 1cef8c6..2766a33 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
@@ -404,6 +404,32 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
     @Parameter( defaultValue = "${project.build.outputTimestamp}" )
     private String outputTimestamp;
 
+    /**
+     * Override of user ID in archive type which can store it.
+     */
+    @Parameter
+    private Integer overrideUid;
+
+    /**
+     * Override of user name in archive type which can store it.
+     */
+    @Parameter
+    private String overrideUserName;
+
+
+    /**
+     * Override of group ID in archive type which can store it.
+     */
+    @Parameter
+    private Integer overrideGid;
+
+    /**
+     * Override of group name in archive type which can store it.
+     */
+    @Parameter
+    private String overrideGroupName;
+
+
     public static FixedStringSearchInterpolator mainProjectInterpolator( MavenProject mainProject )
     {
         if ( mainProject != null )
@@ -938,4 +964,27 @@ public abstract class AbstractAssemblyMojo extends AbstractMojo implements Assem
         return mainProjectInterpolator;
     }
 
+    @Override
+    public Integer getOverrideUid()
+    {
+        return this.overrideUid;
+    }
+
+    @Override
+    public String getOverrideUserName()
+    {
+        return this.overrideUserName;
+    }
+
+    @Override
+    public Integer getOverrideGid()
+    {
+        return this.overrideGid;
+    }
+
+    @Override
+    public String getOverrideGroupName()
+    {
+        return this.overrideGroupName;
+    }
 }
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
index 2b1f23f..12e6757 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
@@ -47,6 +47,7 @@ import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.FileUtils;
+import org.easymock.EasyMock;
 import org.easymock.classextension.EasyMockSupport;
 import org.junit.AfterClass;
 import org.junit.Assert;
@@ -60,6 +61,7 @@ import java.util.Collections;
 import java.util.List;
 
 import static org.easymock.EasyMock.anyBoolean;
+import static org.easymock.EasyMock.anyInt;
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
@@ -171,6 +173,10 @@ public class DefaultAssemblyArchiverTest
             fail( "Should never happen" );
         }
 
+        expect( configSource.getOverrideUid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideUserName() ).andReturn( "root" ).atLeastOnce();
+        expect( configSource.getOverrideGid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideGroupName() ).andReturn( "root" ).atLeastOnce();
         expect( configSource.getOutputDirectory() ).andReturn( outDir );
         expect( configSource.getFinalName() ).andReturn( "finalName" );
         expect( configSource.getArchiverConfig() ).andReturn( null ).anyTimes();
@@ -240,6 +246,11 @@ public class DefaultAssemblyArchiverTest
         expect( configSource.isIgnorePermissions() ).andReturn( true );
         setupInterpolators( configSource, project );
 
+        expect( configSource.getOverrideUid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideUserName() ).andReturn( "root" ).atLeastOnce();
+        expect( configSource.getOverrideGid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideGroupName() ).andReturn( "root" ).atLeastOnce();
+
         mm.replayAll();
 
         final DefaultAssemblyArchiver subject =
@@ -295,6 +306,11 @@ public class DefaultAssemblyArchiverTest
 
         expect( configSource.isIgnorePermissions() ).andReturn( true ).anyTimes();
 
+        expect( configSource.getOverrideUid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideUserName() ).andReturn( "root" ).atLeastOnce();
+        expect( configSource.getOverrideGid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideGroupName() ).andReturn( "root" ).atLeastOnce();
+
         mm.replayAll();
 
         return createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
@@ -345,6 +361,11 @@ public class DefaultAssemblyArchiverTest
         expect( configSource.getJarArchiveConfiguration() ).andReturn( null ).anyTimes();
         expect( configSource.isIgnorePermissions() ).andReturn( true ).anyTimes();
 
+        expect( configSource.getOverrideUid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideUserName() ).andReturn( "root" ).atLeastOnce();
+        expect( configSource.getOverrideGid() ).andReturn( 0 ).atLeastOnce();
+        expect( configSource.getOverrideGroupName() ).andReturn( "root" ).atLeastOnce();
+
         mm.replayAll();
 
         final DefaultAssemblyArchiver subject =
@@ -651,6 +672,18 @@ public class DefaultAssemblyArchiverTest
 
             archiver.setIgnorePermissions( false );
             expectLastCall().anyTimes();
+
+            archiver.setOverrideUid( anyInt() );
+            expectLastCall().anyTimes();
+
+            archiver.setOverrideUserName( EasyMock.<String>anyObject() );
+            expectLastCall().anyTimes();
+
+            archiver.setOverrideGid( anyInt() );
+            expectLastCall().anyTimes();
+
+            archiver.setOverrideGroupName( EasyMock.<String>anyObject() );
+            expectLastCall().anyTimes();
         }
 
         void expectGetArchiver( final String format, final Class<? extends Archiver> archiverClass )
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 f512b70..75f501f 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
@@ -505,4 +505,28 @@ public class PojoConfigSource
     {
         this.environmentInterpolator = environmentInterpolator;
     }
+
+    @Override
+    public Integer getOverrideUid()
+    {
+        return 0;
+    }
+
+    @Override
+    public String getOverrideUserName()
+    {
+        return "root";
+    }
+
+    @Override
+    public Integer getOverrideGid()
+    {
+        return 0;
+    }
+
+    @Override
+    public String getOverrideGroupName()
+    {
+        return "root";
+    }
 }