You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2010/09/21 22:40:04 UTC
svn commit: r999624 - in /maven/plugins/trunk/maven-assembly-plugin/src:
it/projects/dependency-sets/dependencySet-unpacked-filtered/
it/projects/dependency-sets/dependencySet-unpacked-filtered/child1/
it/projects/dependency-sets/dependencySet-unpacked...
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();
}