Author: jdcasey Date: Tue Sep 21 20:40:03 2010 New Revision: 999624 URL: http://svn.apache.org/viewvc?rev=999624&view=rev Log: [MASSEMBLY-228] Enable filtering, line-ending configuration, and control of default excludes and strict filtering using unpackOptions.
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh (with props) Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml Tue Sep 21 20:40:03 2010 @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>parent</artifactId> + <groupId>test</groupId> + <version>1</version> + </parent> + <artifactId>child1</artifactId> + <name>Maven Quick Start Archetype</name> +</project> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt Tue Sep 21 20:40:03 2010 @@ -0,0 +1 @@ +Project Version: ${project.version} \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/src/main/resources/assembly-resources/test.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml Tue Sep 21 20:40:03 2010 @@ -0,0 +1,41 @@ +<?xml version='1.0'?> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>parent</artifactId> + <groupId>test</groupId> + <version>1</version> + </parent> + <artifactId>child2</artifactId> + + <dependencies> + <dependency> + <groupId>test</groupId> + <artifactId>child1</artifactId> + <version>1</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>attach-binary-assembly</id> + <phase>package</phase> + <configuration> + <descriptors> + <descriptor>src/assemble/bin.xml</descriptor> + </descriptors> + </configuration> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> + Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml Tue Sep 21 20:40:03 2010 @@ -0,0 +1,24 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>bin</id> + <formats> + <format>dir</format> + </formats> + <includeBaseDirectory>false</includeBaseDirectory> + <dependencySets> + <dependencySet> + <includes> + <include>test:child1</include> + </includes> + + <outputDirectory>/</outputDirectory> + <outputFileNameMapping>${artifact.artifactId}</outputFileNameMapping> + + <unpack>true</unpack> + <unpackOptions> + <filtered>true</filtered> + </unpackOptions> + </dependencySet> + </dependencySets> +</assembly> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/child2/src/assemble/bin.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml Tue Sep 21 20:40:03 2010 @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.maven.plugin.assembly.test</groupId> + <artifactId>it-project-parent</artifactId> + <version>1</version> + </parent> + + <groupId>test</groupId> + <artifactId>parent</artifactId> + <packaging>pom</packaging> + <version>1</version> + + <modules> + <module>child1</module> + <module>child2</module> + </modules> +</project> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh?rev=999624&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh Tue Sep 21 20:40:03 2010 @@ -0,0 +1,18 @@ +import java.io.*; + +try +{ + File f = new File( basedir, "child2/target/child2-1-bin/child1/assembly-resources/test.txt" ); + + BufferedReader r = new BufferedReader( new FileReader( f ) ); + if ( r.readLine().equals( "Project Version: 1" ) ) + { + return true; + } +} +catch( IOException e ) +{ + e.printStackTrace(); +} + +return false; Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/dependency-sets/dependencySet-unpacked-filtered/verify.bsh ------------------------------------------------------------------------------ svn:eol-style = native Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhase.java Tue Sep 21 20:40:03 2010 @@ -28,6 +28,7 @@ import org.apache.maven.plugin.assembly. import org.apache.maven.plugin.assembly.model.Assembly; import org.apache.maven.project.MavenProjectBuilder; import org.codehaus.plexus.archiver.Archiver; +import org.codehaus.plexus.archiver.manager.ArchiverManager; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -47,6 +48,9 @@ public class DependencySetAssemblyPhase @Requirement private MavenProjectBuilder projectBuilder; + @Requirement + private ArchiverManager archiverManager; + public DependencySetAssemblyPhase() { // used for plexus init @@ -67,7 +71,7 @@ public class DependencySetAssemblyPhase { final AddDependencySetsTask task = new AddDependencySetsTask( assembly.getDependencySets(), context.getResolvedArtifacts(), - configSource.getProject(), projectBuilder, getLogger() ); + configSource.getProject(), projectBuilder, archiverManager, getLogger() ); task.execute( archiver, configSource ); } Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java Tue Sep 21 20:40:03 2010 @@ -42,6 +42,7 @@ import org.apache.maven.plugin.assembly. import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProjectBuilder; import org.codehaus.plexus.archiver.Archiver; +import org.codehaus.plexus.archiver.manager.ArchiverManager; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.AbstractLogEnabled; @@ -72,6 +73,9 @@ public class ModuleSetAssemblyPhase @Requirement private MavenProjectBuilder projectBuilder; + @Requirement + private ArchiverManager archiverManager; + public ModuleSetAssemblyPhase() { // needed for plexus @@ -248,7 +252,7 @@ public class ModuleSetAssemblyPhase final AddDependencySetsTask task = new AddDependencySetsTask( depSets, context.getResolvedArtifacts(), moduleProject, projectBuilder, - getLogger() ); + archiverManager, getLogger() ); task.setModuleProject( moduleProject ); task.setModuleArtifact( chosenModuleArtifacts.get( moduleProject ) ); Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java Tue Sep 21 20:40:03 2010 @@ -27,6 +27,7 @@ import org.apache.maven.plugin.assembly. import org.apache.maven.plugin.assembly.archive.ArchiveCreationException; import org.apache.maven.plugin.assembly.format.AssemblyFormattingException; import org.apache.maven.plugin.assembly.model.DependencySet; +import org.apache.maven.plugin.assembly.model.FileSet; import org.apache.maven.plugin.assembly.model.UnpackOptions; import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils; import org.apache.maven.plugin.assembly.utils.FilterUtils; @@ -37,6 +38,9 @@ import org.apache.maven.project.ProjectB import org.apache.maven.shared.artifact.filter.ScopeArtifactFilter; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.ArchiverException; +import org.codehaus.plexus.archiver.UnArchiver; +import org.codehaus.plexus.archiver.manager.ArchiverManager; +import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; import org.codehaus.plexus.logging.Logger; import java.io.File; @@ -83,14 +87,17 @@ public class AddDependencySetsTask private final Set<Artifact> resolvedArtifacts; + private final ArchiverManager archiverManager; + public AddDependencySetsTask( final List<DependencySet> dependencySets, final Set<Artifact> resolvedArtifacts, final MavenProject project, final MavenProjectBuilder projectBuilder, - final Logger logger ) + final ArchiverManager archiverManager, final Logger logger ) { this.dependencySets = dependencySets; this.resolvedArtifacts = resolvedArtifacts; this.project = project; this.projectBuilder = projectBuilder; + this.archiverManager = archiverManager; this.logger = logger; } @@ -132,6 +139,13 @@ public class AddDependencySetsTask final Set<Artifact> dependencyArtifacts = resolveDependencyArtifacts( dependencySet ); + boolean filterContents = false; + final UnpackOptions opts = dependencySet.getUnpackOptions(); + if ( dependencySet.isUnpack() && opts != null && ( opts.isFiltered() || opts.getLineEnding() != null ) ) + { + filterContents = true; + } + logger.debug( "Adding " + dependencyArtifacts.size() + " dependency artifacts." ); for ( final Iterator<Artifact> j = dependencyArtifacts.iterator(); j.hasNext(); ) @@ -159,38 +173,155 @@ public class AddDependencySetsTask } else { - final AddArtifactTask task = new AddArtifactTask( depArtifact, logger ); - - task.setProject( depProject ); - task.setModuleProject( moduleProject ); - task.setModuleArtifact( moduleArtifact ); - task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory ); - task.setFileNameMapping( dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping ); - - final int dirMode = TypeConversionUtils.modeToInt( dependencySet.getDirectoryMode(), logger ); - if ( dirMode != -1 ) + if ( filterContents ) { - task.setDirectoryMode( dirMode ); + addFilteredUnpackedArtifact( dependencySet, depArtifact, depProject, archiver, configSource ); } - - final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger ); - if ( fileMode != -1 ) + else { - task.setFileMode( fileMode ); + addNormalArtifact( dependencySet, depArtifact, depProject, archiver, configSource ); } + } + } + } - task.setUnpack( dependencySet.isUnpack() ); + private void addFilteredUnpackedArtifact( final DependencySet dependencySet, final Artifact depArtifact, + final MavenProject depProject, final Archiver archiver, + final AssemblerConfigurationSource configSource ) + throws ArchiveCreationException, AssemblyFormattingException + { + logger.debug( "Adding dependency artifact" + depArtifact.getId() + " after filtering the unpacked contents." ); - final UnpackOptions opts = dependencySet.getUnpackOptions(); - if ( dependencySet.isUnpack() && ( opts != null ) ) - { - task.setIncludes( opts.getIncludes() ); - task.setExcludes( opts.getExcludes() ); - } + final StringBuilder sb = new StringBuilder().append( depArtifact.getGroupId() ) + .append( "_" ) + .append( depArtifact.getArtifactId() ) + .append( "_" ) + .append( depArtifact.getVersion() ); + + final String classifier = depArtifact.getClassifier(); + if ( classifier != null ) + { + sb.append( "_" ) + .append( classifier ); + } - task.execute( archiver, configSource ); + sb.append( "." ) + .append( depArtifact.getType() ); + + final File dir = new File( configSource.getWorkingDirectory(), sb.toString() ); + if ( dir.exists() ) + { + logger.debug( "NOT unpacking: " + depArtifact.getId() + ". Directory already exists in workdir:\n\t" + + dir.getAbsolutePath() ); + } + else + { + dir.mkdirs(); + + UnArchiver unarchiver; + try + { + unarchiver = archiverManager.getUnArchiver( depArtifact.getFile() ); + } + catch ( final NoSuchArchiverException e ) + { + throw new ArchiveCreationException( "Failed to retrieve un-archiver for: " + depArtifact.getId() + + ". Dependency filtering cannot proceed.", e ); + } + + unarchiver.setDestDirectory( dir ); + unarchiver.setOverwrite( true ); + unarchiver.setSourceFile( depArtifact.getFile() ); + try + { + unarchiver.extract(); + } + catch ( final ArchiverException e ) + { + throw new ArchiveCreationException( "Failed to unpack dependency archive: " + depArtifact.getId() + + ". Dependency filtering cannot proceed.", e ); } } + + final UnpackOptions opts = dependencySet.getUnpackOptions(); + + final FileSet fs = new FileSet(); + fs.setDirectory( dir.getAbsolutePath() ); + fs.setDirectoryMode( dependencySet.getDirectoryMode() ); + fs.setExcludes( opts.getExcludes() ); + fs.setFileMode( dependencySet.getFileMode() ); + fs.setFiltered( opts.isFiltered() ); + fs.setIncludes( opts.getIncludes() ); + + String outDir = dependencySet.getOutputDirectory(); + if ( outDir == null ) + { + outDir = defaultOutputDirectory; + } + + String filenameMapping = dependencySet.getOutputFileNameMapping(); + if ( filenameMapping == null ) + { + filenameMapping = defaultOutputFileNameMapping; + } + + filenameMapping = + AssemblyFormatUtils.evaluateFileNameMapping( filenameMapping, depArtifact, configSource.getProject(), + moduleProject, moduleArtifact, depProject, configSource ); + + final String outputLocation = new File( outDir, filenameMapping ).getPath(); + + fs.setOutputDirectory( outputLocation ); + + fs.setLineEnding( opts.getLineEnding() ); + fs.setUseDefaultExcludes( opts.isUseDefaultExcludes() ); + fs.setUseStrictFiltering( opts.isUseStrictFiltering() ); + + final AddFileSetsTask task = new AddFileSetsTask( fs ); + task.setProject( depProject ); + task.setModuleProject( moduleProject ); + task.setLogger( logger ); + + task.execute( archiver, configSource ); + } + + private void addNormalArtifact( final DependencySet dependencySet, final Artifact depArtifact, + final MavenProject depProject, final Archiver archiver, + final AssemblerConfigurationSource configSource ) + throws AssemblyFormattingException, ArchiveCreationException + { + logger.debug( "Adding dependency artifact" + depArtifact.getId() + "." ); + + final AddArtifactTask task = new AddArtifactTask( depArtifact, logger ); + + task.setProject( depProject ); + task.setModuleProject( moduleProject ); + task.setModuleArtifact( moduleArtifact ); + task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory ); + task.setFileNameMapping( dependencySet.getOutputFileNameMapping(), defaultOutputFileNameMapping ); + + final int dirMode = TypeConversionUtils.modeToInt( dependencySet.getDirectoryMode(), logger ); + if ( dirMode != -1 ) + { + task.setDirectoryMode( dirMode ); + } + + final int fileMode = TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger ); + if ( fileMode != -1 ) + { + task.setFileMode( fileMode ); + } + + task.setUnpack( dependencySet.isUnpack() ); + + final UnpackOptions opts = dependencySet.getUnpackOptions(); + if ( dependencySet.isUnpack() && ( opts != null ) ) + { + task.setIncludes( opts.getIncludes() ); + task.setExcludes( opts.getExcludes() ); + } + + task.execute( archiver, configSource ); } private MavenProject buildProjectStub( final Artifact depArtifact ) Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java Tue Sep 21 20:40:03 2010 @@ -33,6 +33,8 @@ import org.codehaus.plexus.logging.conso import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -56,6 +58,11 @@ public class AddFileSetsTask this.fileSets = fileSets; } + public AddFileSetsTask( final FileSet... fileSets ) + { + this.fileSets = new ArrayList<FileSet>( Arrays.asList( fileSets ) ); + } + public void execute( final Archiver archiver, final AssemblerConfigurationSource configSource ) throws ArchiveCreationException, AssemblyFormattingException { Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo Tue Sep 21 20:40:03 2010 @@ -581,6 +581,47 @@ <defaultValue>false</defaultValue> <type>boolean</type> </field> + <field> + <name>lineEnding</name> + <version>1.1.2+</version> + <type>String</type> + <description> + <![CDATA[ + Sets the line-endings of the files. + Valid values: + <ul> + <li><b>"keep"</b> - Preserve all line endings</li> + <li><b>"unix"</b> - Use Unix-style line endings</li> + <li><b>"lf"</b> - Use a single line-feed line endings</li> + <li><b>"dos"</b> - Use DOS-style line endings</li> + <li><b>"crlf"</b> - Use Carraige-return, line-feed line endings</li> + </ul> + ]]> + </description> + </field> + <field> + <name>useStrictFiltering</name> + <version>1.1.2+</version> + <type>boolean</type> + <defaultValue>false</defaultValue> + <description> + When specified as true, any include/exclude patterns which aren't used to filter an actual + artifact during assembly creation will cause the build to fail with an error. This is meant + to highlight obsolete inclusions or exclusions, or else signal that the assembly descriptor + is incorrectly configured. (Since 2.2) + </description> + </field> + <field> + <name>useDefaultExcludes</name> + <version>1.1.2+</version> + <type>boolean</type> + <defaultValue>true</defaultValue> + <description> + Whether standard exclusion patterns, such as those matching CVS and Subversion + metadata files, should be used when calculating the files affected by this set. + For backward compatibility, the default value is true. (Since 2.2) + </description> + </field> </fields> </class> <class> Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Tue Sep 21 20:40:03 2010 @@ -972,6 +972,47 @@ <defaultValue>false</defaultValue> <type>boolean</type> </field> + <field> + <name>lineEnding</name> + <version>1.1.2+</version> + <type>String</type> + <description> + <![CDATA[ + Sets the line-endings of the files. + Valid values: + <ul> + <li><b>"keep"</b> - Preserve all line endings</li> + <li><b>"unix"</b> - Use Unix-style line endings</li> + <li><b>"lf"</b> - Use a single line-feed line endings</li> + <li><b>"dos"</b> - Use DOS-style line endings</li> + <li><b>"crlf"</b> - Use Carraige-return, line-feed line endings</li> + </ul> + ]]> + </description> + </field> + <field> + <name>useStrictFiltering</name> + <version>1.1.2+</version> + <type>boolean</type> + <defaultValue>false</defaultValue> + <description> + When specified as true, any include/exclude patterns which aren't used to filter an actual + artifact during assembly creation will cause the build to fail with an error. This is meant + to highlight obsolete inclusions or exclusions, or else signal that the assembly descriptor + is incorrectly configured. (Since 2.2) + </description> + </field> + <field> + <name>useDefaultExcludes</name> + <version>1.1.2+</version> + <type>boolean</type> + <defaultValue>true</defaultValue> + <description> + Whether standard exclusion patterns, such as those matching CVS and Subversion + metadata files, should be used when calculating the files affected by this set. + For backward compatibility, the default value is true. (Since 2.2) + </description> + </field> </fields> </class> <class> Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Tue Sep 21 20:40:03 2010 @@ -110,7 +110,7 @@ public class AddDependencySetsTaskTest final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), Collections.singleton( depArtifactMock.getArtifact() ), depProject, - macTask.projectBuilder, logger ); + macTask.projectBuilder, macTask.archiverManager, logger ); task.addDependencySet( ds, macTask.archiver, macTask.configSource ); @@ -132,7 +132,8 @@ public class AddDependencySetsTaskTest final Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ); final AddDependencySetsTask task = - new AddDependencySetsTask( Collections.singletonList( ds ), null, project, macTask.projectBuilder, logger ); + new AddDependencySetsTask( Collections.singletonList( ds ), null, project, macTask.projectBuilder, + macTask.archiverManager, logger ); task.addDependencySet( ds, null, macTask.configSource ); @@ -181,7 +182,7 @@ public class AddDependencySetsTaskTest final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), Collections.singleton( depMock.getArtifact() ), - project, macTask.projectBuilder, logger ); + project, macTask.projectBuilder, macTask.archiverManager, logger ); task.addDependencySet( ds, macTask.archiver, macTask.configSource ); @@ -249,7 +250,7 @@ public class AddDependencySetsTaskTest final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), Collections.singleton( artifactMock.getArtifact() ), project, - macTask.projectBuilder, logger ); + macTask.projectBuilder, macTask.archiverManager, logger ); mockManager.replayAll(); @@ -278,7 +279,7 @@ public class AddDependencySetsTaskTest final AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ), Collections.singleton( artifactMock.getArtifact() ), project, - macTask.projectBuilder, logger ); + macTask.projectBuilder, macTask.archiverManager, logger ); final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet ); @@ -315,7 +316,8 @@ public class AddDependencySetsTaskTest mockManager.replayAll(); final AddDependencySetsTask task = - new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, logger ); + new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, null, + logger ); final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet ); @@ -350,7 +352,8 @@ public class AddDependencySetsTaskTest mockManager.replayAll(); final AddDependencySetsTask task = - new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, logger ); + new AddDependencySetsTask( Collections.singletonList( dependencySet ), artifacts, project, null, null, + logger ); final Set<Artifact> result = task.resolveDependencyArtifacts( dependencySet ); Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?rev=999624&r1=999623&r2=999624&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java Tue Sep 21 20:40:03 2010 @@ -28,6 +28,7 @@ import org.apache.maven.project.MavenPro import org.apache.maven.project.ProjectBuildingException; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.ArchiverException; +import org.codehaus.plexus.archiver.manager.ArchiverManager; import org.easymock.MockControl; import java.io.File; @@ -50,6 +51,10 @@ public class MockAndControlForAddDepende public MavenProjectBuilder projectBuilder; + public MockControl archiverManagerCtl; + + public ArchiverManager archiverManager; + public MockControl projectBuilderCtl; private final MavenProject project; @@ -78,6 +83,11 @@ public class MockAndControlForAddDepende projectBuilder = (MavenProjectBuilder) projectBuilderCtl.getMock(); + archiverManagerCtl = MockControl.createControl( ArchiverManager.class ); + mockManager.add( archiverManagerCtl ); + + archiverManager = (ArchiverManager) archiverManagerCtl.getMock(); + enableDefaultExpectations(); }