Author: brianf Date: Fri Nov 5 18:00:17 2010 New Revision: 1031684 URL: http://svn.apache.org/viewvc?rev=1031684&view=rev Log: MDEP-211 patch from Oumar Aziz OUATTARA
Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractDependencyFilterMojo.java maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractFromDependenciesMojo.java maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/BuildClasspathMojo.java maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/CopyDependenciesMojo.java maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/utils/DependencyUtil.java maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestBuildClasspathMojo.java maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestCopyDependenciesMojo.java Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractDependencyFilterMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractDependencyFilterMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractDependencyFilterMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractDependencyFilterMojo.java Fri Nov 5 18:00:17 2010 @@ -206,6 +206,16 @@ public abstract class AbstractDependency * @parameter expression="${overWriteIfNewer}" default-value="true" */ protected boolean overWriteIfNewer; + + /** + * Prepend the groupId during copy. + * + * @optional + * @since 2.2 + * @parameter expression="${mdep.prependGroupId}" default-value="false" + * @parameter + */ + protected boolean prependGroupId = false; protected abstract ArtifactsFilter getMarkedArtifactFilter(); @@ -383,4 +393,19 @@ public abstract class AbstractDependency } // TODO: Set marker files. + + /** + * @return true, if the groupId should be prepended to the filename. + */ + public boolean isPrependGroupId() { + return prependGroupId; + } + + /** + * @param prependGroupId - + * true if the groupId must be prepended during the copy. + */ + public void setPrependGroupId(boolean prependGroupId) { + this.prependGroupId = prependGroupId; + } } Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractFromDependenciesMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractFromDependenciesMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractFromDependenciesMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/AbstractFromDependenciesMojo.java Fri Nov 5 18:00:17 2010 @@ -40,7 +40,7 @@ public abstract class AbstractFromDepend * @parameter */ protected boolean stripVersion = false; - + /** * Default location used for mojo unless overridden in ArtifactItem * @@ -233,4 +233,5 @@ public abstract class AbstractFromDepend { this.copyPom = copyPom; } + } Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/BuildClasspathMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/BuildClasspathMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/BuildClasspathMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/BuildClasspathMojo.java Fri Nov 5 18:00:17 2010 @@ -288,7 +288,7 @@ public class BuildClasspathMojo // TODO: add param for prepending groupId and version. sb.append( prefix ); sb.append( File.separator ); - sb.append( DependencyUtil.getFormattedFileName( art, this.stripVersion ) ); + sb.append( DependencyUtil.getFormattedFileName( art, this.stripVersion, this.prependGroupId) ); } } Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/CopyDependenciesMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/CopyDependenciesMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/CopyDependenciesMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/CopyDependenciesMojo.java Fri Nov 5 18:00:17 2010 @@ -87,7 +87,7 @@ public class CopyDependenciesMojo { for ( Iterator i = artifacts.iterator(); i.hasNext(); ) { - copyArtifact( (Artifact) i.next(), this.stripVersion ); + copyArtifact( (Artifact) i.next(), this.stripVersion, this.prependGroupId ); } } else @@ -176,18 +176,19 @@ public class CopyDependenciesMojo * @param removeVersion * specifies if the version should be removed from the file name * when copying. - * + * @param prependGroupId + * specifies if the groupId should be prepend to the file while copying. * @throws MojoExecutionException * with a message if an error occurs. * * @see DependencyUtil#copyFile(File, File, Log) * @see DependencyUtil#getFormattedFileName(Artifact, boolean) */ - protected void copyArtifact( Artifact artifact, boolean removeVersion ) + protected void copyArtifact( Artifact artifact, boolean removeVersion, boolean prependGroupId ) throws MojoExecutionException { - String destFileName = DependencyUtil.getFormattedFileName( artifact, removeVersion ); + String destFileName = DependencyUtil.getFormattedFileName( artifact, removeVersion, prependGroupId); File destDir; destDir = DependencyUtil.getFormattedOutputDirectory( useSubDirectoryPerScope, useSubDirectoryPerType, useSubDirectoryPerArtifact, @@ -213,7 +214,8 @@ public class CopyDependenciesMojo // Copy the pom if ( pomArtifact.getFile() != null && pomArtifact.getFile().exists() ) { - File pomDestFile = new File( destDir, DependencyUtil.getFormattedFileName( pomArtifact, removeVersion ) ); + File pomDestFile = new File( destDir, DependencyUtil.getFormattedFileName( pomArtifact, removeVersion, + prependGroupId) ); if ( ! pomDestFile.exists() ) { copyFile( pomArtifact.getFile(), pomDestFile ); Modified: maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/utils/DependencyUtil.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/utils/DependencyUtil.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/utils/DependencyUtil.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/main/java/org/apache/maven/plugin/dependency/utils/DependencyUtil.java Fri Nov 5 18:00:17 2010 @@ -45,11 +45,36 @@ public final class DependencyUtil * @param artifact File to be formatted. * @param removeVersion Specifies if the version should be removed from the file name. * @return Formatted file name in the format artifactId-[version]-[classifier].[type] + * @see {...@link #getFormattedFileName(Artifact, boolean, boolean)}. */ - public static String getFormattedFileName( Artifact artifact, boolean removeVersion ) + public static String getFormattedFileName( Artifact artifact, boolean removeVersion ) { + return getFormattedFileName( artifact, removeVersion , false); + } + + /** + * Builds the file name. If removeVersion is set, then the file name must be + * reconstructed from the groupId (if <b>prependGroupId</b> is true) artifactId, + * Classifier (if used) and Type. + * Otherwise, this method returns the artifact file name. + * + * @param artifact + * File to be formatted. + * @param removeVersion + * Specifies if the version should be removed from the file name. + * @param prependGroupId + * Specifies if the groupId should be prepended to the file name. + * @return Formatted file name in the format + * [groupId].artifactId-[version]-[classifier].[type] + */ + public static String getFormattedFileName( Artifact artifact, boolean removeVersion, + boolean prependGroupId) { - String destFileName = null; - + StringBuffer destFileName = new StringBuffer(); + + if (prependGroupId) { + destFileName.append(artifact.getGroupId()).append("."); + } + String versionString = null; if ( !removeVersion ) { @@ -66,12 +91,11 @@ public final class DependencyUtil { classifierString = "-" + artifact.getClassifier(); } - - destFileName = - artifact.getArtifactId() + versionString + classifierString + "." - + artifact.getArtifactHandler().getExtension(); - - return destFileName; + destFileName.append(artifact.getArtifactId()).append(versionString); + destFileName.append(classifierString).append("."); + destFileName.append(artifact.getArtifactHandler().getExtension()); + + return destFileName.toString(); } /** Modified: maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestBuildClasspathMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestBuildClasspathMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestBuildClasspathMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestBuildClasspathMojo.java Fri Nov 5 18:00:17 2010 @@ -132,16 +132,33 @@ public class TestBuildClasspathMojo mojo.appendArtifactPath( artifact, sb ); assertEquals( "%M2_REPO%" + File.separator + artifact.getFile().getName(), sb.toString() ); + mojo.setLocalRepoProperty( "%M2_REPO%" ); + sb.setLength( 0 ); + mojo.setPrependGroupId( true ); + mojo.appendArtifactPath( artifact, sb ); + assertEquals("If prefix is null, prependGroupId has no impact ", "%M2_REPO%"+File.separator + + DependencyUtil.getFormattedFileName( artifact, false, false ), sb.toString()); + mojo.setLocalRepoProperty( "" ); mojo.setPrefix( "prefix" ); sb.setLength( 0 ); + mojo.setPrependGroupId( true ); mojo.appendArtifactPath( artifact, sb ); - assertEquals( "prefix" + File.separator + artifact.getFile().getName(), sb.toString() ); - + assertEquals("prefix"+File.separator+DependencyUtil.getFormattedFileName( artifact, false, true ), + sb.toString()); + mojo.setPrependGroupId( false ); + + mojo.setLocalRepoProperty( "" ); + mojo.setPrefix( "prefix" ); + sb.setLength( 0 ); + mojo.appendArtifactPath( artifact, sb ); + assertEquals("prefix"+File.separator+artifact.getFile().getName(),sb.toString()); + mojo.setPrefix( "prefix" ); mojo.setStripVersion( true ); sb.setLength( 0 ); mojo.appendArtifactPath( artifact, sb ); assertEquals( "prefix" + File.separator + DependencyUtil.getFormattedFileName( artifact, true ), sb.toString() ); + } } Modified: maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestCopyDependenciesMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestCopyDependenciesMojo.java?rev=1031684&r1=1031683&r2=1031684&view=diff ============================================================================== --- maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestCopyDependenciesMojo.java (original) +++ maven/plugins/trunk/maven-dependency-plugin/src/test/java/org/apache/maven/plugin/dependency/TestCopyDependenciesMojo.java Fri Nov 5 18:00:17 2010 @@ -766,4 +766,20 @@ public class TestCopyDependenciesMojo assertTrue( file.exists() ); } } + + public void testPrependGroupId() + throws Exception + { + mojo.prependGroupId = true; + mojo.execute(); + + Iterator iter = mojo.project.getArtifacts().iterator(); + while ( iter.hasNext() ) + { + Artifact artifact = (Artifact) iter.next(); + String fileName = DependencyUtil.getFormattedFileName( artifact, false, true ); + File file = new File( mojo.outputDirectory, fileName ); + assertTrue( file.exists() ); + } + } }