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 10:19:51 UTC
[maven-assembly-plugin] 01/02: 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 MASSEMBLY-922
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git
commit 33fb23ac565c9b418499613846acd6e4cf61eb1e
Author: Vaclav Haisman <vh...@gmail.com>
AuthorDate: Mon Dec 30 10:21:53 2019 +0100
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..9310439 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( property = "assembly.overrideUid" )
+ private Integer overrideUid;
+
+ /**
+ * Override of user name in archive type which can store it.
+ */
+ @Parameter( property = "assembly.overrideUserName" )
+ private String overrideUserName;
+
+
+ /**
+ * Override of group ID in archive type which can store it.
+ */
+ @Parameter( property = "assembly.overrideGid" )
+ private Integer overrideGid;
+
+ /**
+ * Override of group name in archive type which can store it.
+ */
+ @Parameter( property = "assembly.overrideGroupName" )
+ 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";
+ }
}