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/27 11:21:20 UTC

[maven-assembly-plugin] 01/01: [MASSEMBLY-765] add property groupIdPath

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

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

commit 919d18903deb11975d55adc38e4e864d54e0461e
Author: rfscholte <rf...@apache.org>
AuthorDate: Mon Apr 27 13:21:03 2020 +0200

    [MASSEMBLY-765] add property groupIdPath
---
 .../assembly/utils/AssemblyFormatUtils.java        | 26 ++++++++++++----------
 src/site/fml/faq.fml                               |  2 ++
 .../archive/phase/FileSetAssemblyPhaseTest.java    |  1 +
 .../archive/phase/ModuleSetAssemblyPhaseTest.java  |  4 +++-
 .../assembly/archive/task/AddArtifactTaskTest.java |  1 +
 .../archive/task/AddDependencySetsTaskTest.java    |  9 ++++----
 .../assembly/archive/task/AddFileSetsTaskTest.java |  4 ++++
 .../assembly/utils/AssemblyFormatUtilsTest.java    | 16 +++++++++++++
 8 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
index f496d05..b5ac4e0 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java
@@ -19,6 +19,16 @@ package org.apache.maven.plugins.assembly.utils;
  * under the License.
  */
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Properties;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
@@ -27,20 +37,13 @@ import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.utils.Os;
 import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
+import org.codehaus.plexus.interpolation.fixed.MapBasedValueSource;
 import org.codehaus.plexus.interpolation.fixed.PrefixedObjectValueSource;
 import org.codehaus.plexus.interpolation.fixed.PrefixedPropertiesValueSource;
 import org.codehaus.plexus.interpolation.fixed.PropertiesBasedValueSource;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
 
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Properties;
-
 /**
  *
  */
@@ -141,18 +144,17 @@ public final class AssemblyFormatUtils
                 vs = new PrefixedObjectValueSource( "artifact.", artifactProject.getArtifact() );
             }
 
+            final String groupIdPath = artifactProject.getGroupId().replace( '.', '/' );
+
             return FixedStringSearchInterpolator.createWithPermittedNulls(
+                new MapBasedValueSource( Collections.singletonMap( "artifact.groupIdPath", groupIdPath ) ),
                 new PrefixedObjectValueSource( "artifact.", artifactProject ),
                 new PrefixedPropertiesValueSource( "artifact.properties.", artifactProject.getProperties() ), vs );
-
-
         }
         else
         {
             return FixedStringSearchInterpolator.empty();
         }
-
-
     }
 
     @Nonnull
diff --git a/src/site/fml/faq.fml b/src/site/fml/faq.fml
index cc9cad2..ca7db3f 100644
--- a/src/site/fml/faq.fml
+++ b/src/site/fml/faq.fml
@@ -176,6 +176,8 @@ under the License.
               <li><code>${artifact.baseVersion}</code> :  The artifact base version (For a SNAPSHOT it will be always -SNAPSHOT and not its timestamp even if you didn't built it yourself).</li>
               <li><code>${artifact.classifier}</code> :  The artifact classifier.</li>
               <li><code>${artifact.scope}</code> :  The artifact scope.</li>
+              <li><code>${artifact.groupIdPath}</code> :  The groupId of the artifact as path</li>
+              <li><code>${artifact.file.name}</code> :  The name of the file attached to this artifact</li>
               <li>...</li>
             </ul>
             You can use <code>${module.XXXXX}</code> when using it for your project modules artifacts.
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
index 05f53e5..d24ada7 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/FileSetAssemblyPhaseTest.java
@@ -80,6 +80,7 @@ public class FileSetAssemblyPhaseTest
         assembly.addFileSet( fs );
 
         final MavenProject project = new MavenProject( new Model() );
+        project.setGroupId( "GROUPID" );
 
         final int dirMode = Integer.parseInt( "777", 8 );
         final int fileMode = Integer.parseInt( "777", 8 );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
index b215699..d3b65ad 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
@@ -156,6 +156,7 @@ public class ModuleSetAssemblyPhaseTest
         final File basedir = temporaryFolder.getRoot();
 
         final MavenProject artifactProject = new MavenProject( new Model() );
+        artifactProject.setGroupId( "GROUPID" );
         artifactProject.setFile( new File( basedir, "pom.xml" ) );
 
         Artifact artifact = mock( Artifact.class );
@@ -194,6 +195,7 @@ public class ModuleSetAssemblyPhaseTest
         sources.setIncludeModuleDirectory( true );
 
         final MavenProject artifactProject = new MavenProject( new Model() );
+        artifactProject.setGroupId( "GROUPID" );
 
         final File basedir = temporaryFolder.getRoot();
 
@@ -234,7 +236,7 @@ public class ModuleSetAssemblyPhaseTest
         final MavenProject project = new MavenProject( model );
 
         final File basedir = temporaryFolder.getRoot();
-
+        project.setGroupId( "GROUPID" );
         project.setFile( new File( basedir, "pom.xml" ) );
 
         Artifact artifact = mock( Artifact.class );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
index a9b8af8..75db5af 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddArtifactTaskTest.java
@@ -151,6 +151,7 @@ public class AddArtifactTaskTest
         model.setVersion( version );
 
         MavenProject project = new MavenProject( model );
+        project.setGroupId( "GROUPID" );
         task.setProject( project );
 
         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 064868f..0c60279 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
@@ -205,6 +205,7 @@ public class AddDependencySetsTaskTest
         final File file = new File( "dep-artifact.jar" );
 
         Artifact depArtifact = mock( Artifact.class );
+        when( depArtifact.getGroupId() ).thenReturn( "GROUPID" );
         when( depArtifact.getArtifactId() ).thenReturn( aid );
         when( depArtifact.getBaseVersion() ).thenReturn( version );
         when( depArtifact.getFile() ).thenReturn( file );
@@ -306,17 +307,14 @@ public class AddDependencySetsTaskTest
         when( archiver.getOverrideDirectoryMode() ).thenReturn( 0222 );
         when( archiver.getOverrideFileMode() ).thenReturn( 0222 );
 
-        if ( unpack )
-        {
-            
-        }
-        else
+        if ( !unpack )
         {
             when( configSource.getProject() ).thenReturn( project );
         }
 
 
         final MavenProject depProject = new MavenProject( new Model() );
+        depProject.setGroupId( "GROUPID" );
 
         ProjectBuildingResult pbr = mock( ProjectBuildingResult.class );
         when( pbr.getProject() ).thenReturn( depProject );
@@ -491,6 +489,7 @@ public class AddDependencySetsTaskTest
         dependencySet.setUnpackOptions( unpackOptions );
 
         final MavenProject project = new MavenProject( new Model() );
+        project.setGroupId( "GROUPID" );
 
         ProjectBuildingRequest pbReq  = mock( ProjectBuildingRequest.class );
         ProjectBuildingResult pbRes = mock( ProjectBuildingResult.class );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
index b6a4dc0..53998cd 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTaskTest.java
@@ -136,6 +136,7 @@ public class AddFileSetsTaskTest
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
 
         final MavenProject project = new MavenProject( new Model() );
+        project.setGroupId( "GROUPID" );
         project.setFile( new File( basedir, "pom.xml" ) );
 
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
@@ -178,6 +179,7 @@ public class AddFileSetsTaskTest
         final AssemblerConfigurationSource configSource = mock( AssemblerConfigurationSource.class );
 
         final MavenProject project = new MavenProject( new Model() );
+        project.setGroupId( "GROUPID" );
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
         final AddFileSetsTask task = new AddFileSetsTask( new ArrayList<FileSet>() );
@@ -212,6 +214,8 @@ public class AddFileSetsTaskTest
         when( archiver.getOverrideFileMode() ).thenReturn( -1 );
 
         final MavenProject project = new MavenProject( new Model() );
+        project.setGroupId( "GROUPID" );
+
         DefaultAssemblyArchiverTest.setupInterpolators( configSource, project );
 
         final AddFileSetsTask task = new AddFileSetsTask( new ArrayList<FileSet>() );
diff --git a/src/test/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtilsTest.java b/src/test/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtilsTest.java
index 40eb100..8c97ea9 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtilsTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.io.File;
 import java.util.Properties;
 
 import org.apache.maven.artifact.Artifact;
@@ -38,6 +39,7 @@ import org.apache.maven.plugins.assembly.archive.DefaultAssemblyArchiverTest;
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
@@ -821,4 +823,18 @@ public class AssemblyFormatUtilsTest
         assertTrue( AssemblyFormatUtils.isUnixRootReference( "/etc/home" ) );
     }
 
+    @Test
+    public void groupIdPath()
+    {
+        Artifact artifact = mock( Artifact.class );
+        when( artifact.getFile() ).thenReturn( new File( "dir", "artifactId.jar" ) );
+                        
+        MavenProject project = mock( MavenProject.class );
+        when( project.getGroupId() ).thenReturn( "a.b.c" );
+        when( project.getArtifact() ).thenReturn( artifact );
+        
+        FixedStringSearchInterpolator interpolator = AssemblyFormatUtils.artifactProjectInterpolator( project );
+        assertEquals( "a/b/c", interpolator.interpolate( "${artifact.groupIdPath}" ) );
+        assertEquals( "a/b/c/artifactId.jar", interpolator.interpolate( "${artifact.groupIdPath}/${artifact.file.name}" ) );
+    }
 }