Author: jdcasey
Date: Thu Jun 22 21:33:55 2006
New Revision: 416562

URL: http://svn.apache.org/viewvc?rev=416562&view=rev
Log:
Adding includes/excludes implementation to repository assembly.

Added:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
   (with props)
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
   (with props)
Modified:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/UnpackMojo.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/AssemblyIncludesArtifactFilter.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java?rev=416562&r1=416561&r2=416562&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractAssemblyMojo.java
 Thu Jun 22 21:33:55 2006
@@ -34,6 +34,8 @@
 import org.apache.maven.plugin.assembly.interpolation.ReflectionProperties;
 import org.apache.maven.plugin.assembly.repository.RepositoryAssembler;
 import org.apache.maven.plugin.assembly.repository.RepositoryAssemblyException;
+import org.apache.maven.plugin.assembly.utils.FilterUtils;
+import org.apache.maven.plugin.assembly.utils.ProjectUtils;
 import org.apache.maven.plugin.assembly.utils.PropertyUtils;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.Component;
@@ -394,37 +396,6 @@
         {
             Repository repository = (Repository) i.next();
 
-            AndArtifactFilter filter = new AndArtifactFilter();
-
-            // 
----------------------------------------------------------------------------
-            // Includes
-            //
-            // We'll take everything if no includes are specified to try and 
make this
-            // process more maintainable. Don't want to have to update the 
assembly
-            // descriptor everytime the POM is updated.
-            // 
----------------------------------------------------------------------------
-
-            if ( repository.getIncludes().isEmpty() )
-            {
-                filter.add( new AssemblyIncludesArtifactFilter( 
getDependenciesIncludeList() ) );
-            }
-            else
-            {
-                filter.add( new AssemblyIncludesArtifactFilter( 
repository.getIncludes() ) );
-            }
-
-            // 
----------------------------------------------------------------------------
-            // Excludes
-            //
-            // We still want to make it easy to exclude a few things even if 
we slurp
-            // up everything.
-            // 
----------------------------------------------------------------------------
-
-            if ( !repository.getExcludes().isEmpty() )
-            {
-                filter.add( new AssemblyExcludesArtifactFilter( 
repository.getExcludes() ) );
-            }
-
             File repositoryDirectory = new File( tempRoot, 
repository.getOutputDirectory() );
 
             if ( !repositoryDirectory.exists() )
@@ -432,7 +403,7 @@
                 repositoryDirectory.mkdirs();
             }
 
-            repositoryAssembler.assemble( repositoryDirectory, repository, 
project, localRepository );
+            repositoryAssembler.assemble( repositoryDirectory, repository, 
getExecutedProject(), localRepository );
 
             try
             {
@@ -474,7 +445,7 @@
             
             Set moduleProjects = new HashSet( allModuleProjects );
             
-            filterProjects( moduleProjects, moduleSet.getIncludes(), 
moduleSet.getExcludes(), false );
+            FilterUtils.filterProjects( moduleProjects, 
moduleSet.getIncludes(), moduleSet.getExcludes(), false );
 
             List moduleFileSets = new ArrayList();
 
@@ -541,7 +512,7 @@
                     List includes = binaries.getIncludes();
                     List excludes = binaries.getExcludes();
                     
-                    filterArtifacts( binaryDependencies, includes, excludes, 
true, Collections.EMPTY_LIST );
+                    FilterUtils.filterArtifacts( binaryDependencies, includes, 
excludes, true, Collections.EMPTY_LIST );
                     
                     if ( binaries.isUnpack() )
                     {
@@ -662,65 +633,6 @@
         }
     }
 
-    private void filterProjects( Set moduleProjects, List includes, List 
excludes, boolean actTransitively )
-    {
-        AndArtifactFilter filter = new AndArtifactFilter();
-
-        if ( !includes.isEmpty() )
-        {
-            filter.add( new AssemblyIncludesArtifactFilter( includes, 
actTransitively ) );
-        }
-        if ( !excludes.isEmpty() )
-        {
-            filter.add( new AssemblyExcludesArtifactFilter( excludes, 
actTransitively ) );
-        }
-        
-        for ( Iterator it = moduleProjects.iterator(); it.hasNext(); )
-        {
-            MavenProject project = (MavenProject) it.next();
-            Artifact artifact = project.getArtifact();
-            
-            if ( !filter.include( artifact ) )
-            {
-                it.remove();
-            }
-        }
-    }
-
-    private void filterArtifacts( Set artifacts, List includes, List excludes, 
boolean actTransitively, List additionalFilters )
-    {
-        AndArtifactFilter filter = new AndArtifactFilter();
-        
-        if ( additionalFilters != null && !additionalFilters.isEmpty() )
-        {
-            for ( Iterator it = additionalFilters.iterator(); it.hasNext(); )
-            {
-                ArtifactFilter additionalFilter = (ArtifactFilter) it.next();
-                
-                filter.add( additionalFilter );
-            }
-        }
-
-        if ( !includes.isEmpty() )
-        {
-            filter.add( new AssemblyIncludesArtifactFilter( includes, 
actTransitively ) );
-        }
-        if ( !excludes.isEmpty() )
-        {
-            filter.add( new AssemblyExcludesArtifactFilter( excludes, 
actTransitively ) );
-        }
-        
-        for ( Iterator it = artifacts.iterator(); it.hasNext(); )
-        {
-            Artifact artifact = (Artifact) it.next();
-            
-            if ( !filter.include( artifact ) )
-            {
-                it.remove();
-            }
-        }
-    }
-
     private static String evaluateFileNameMapping( Artifact artifact, String 
mapping )
         throws MojoExecutionException
     {
@@ -1057,12 +969,12 @@
                 Integer.toString( archiver.getDefaultDirectoryMode(), 8 ) + " 
file perms: " +
                 Integer.toString( archiver.getDefaultFileMode(), 8 ) );
 
-            Set allDependencyArtifacts = getDependencies();
+            Set allDependencyArtifacts = ProjectUtils.getDependencies( 
getExecutedProject() );
             Set dependencyArtifacts = new HashSet( allDependencyArtifacts );
             
             AssemblyScopeArtifactFilter scopeFilter = new 
AssemblyScopeArtifactFilter( dependencySet.getScope() );
             
-            filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), 
dependencySet.getExcludes(), true, Collections.singletonList( scopeFilter ) );
+            FilterUtils.filterArtifacts( dependencyArtifacts, 
dependencySet.getIncludes(), dependencySet.getExcludes(), true, 
Collections.singletonList( scopeFilter ) );
 
             for ( Iterator j = dependencyArtifacts.iterator(); j.hasNext(); )
             {
@@ -1155,29 +1067,6 @@
                 getLog().debug( "artifact: " + artifact + " not included" );
             }
         }
-    }
-
-    /**
-     * Retrieves an includes list generated from the existing depedencies in a 
project.
-     *
-     * @return A List of includes
-     */
-    private List getDependenciesIncludeList()
-    {
-        List includes = new ArrayList();
-
-        for ( Iterator i = getDependencies().iterator(); i.hasNext(); )
-        {
-            Artifact a = (Artifact) i.next();
-
-            if ( !project.getGroupId().equals( a.getGroupId() ) ||
-                !project.getArtifactId().equals( a.getArtifactId() ) )
-            {
-                includes.add( a.getGroupId() + ":" + a.getArtifactId() );
-            }
-        }
-
-        return includes;
     }
 
     private void addDirectory( Archiver archiver, File directory, String 
output, String[] includes, List excludes )

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java?rev=416562&r1=416561&r2=416562&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/AbstractUnpackingMojo.java
 Thu Jun 22 21:33:55 2006
@@ -109,32 +109,10 @@
     protected MavenProject project;
 
 
-    /**
-     * Retrieves all artifact dependencies.
-     *
-     * @return A HashSet of artifacts
-     */
-    protected Set getDependencies()
+    protected MavenProject getExecutedProject()
     {
-        MavenProject project = getExecutedProject();
-
-        Set dependenciesSet = new HashSet();
-
-        if ( project.getArtifact() != null && project.getArtifact().getFile() 
!= null )
-        {
-            dependenciesSet.add( project.getArtifact() );
-        }
-
-        Set projectArtifacts = project.getArtifacts();
-        if ( projectArtifacts != null )
-        {
-            dependenciesSet.addAll( projectArtifacts );
-        }
-
-        return dependenciesSet;
+        return project;
     }
-
-    protected abstract MavenProject getExecutedProject();
 
     /**
      * Unpacks the archive file.

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/UnpackMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/UnpackMojo.java?rev=416562&r1=416561&r2=416562&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/UnpackMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/UnpackMojo.java
 Thu Jun 22 21:33:55 2006
@@ -19,6 +19,7 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.assembly.utils.ProjectUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
 
@@ -48,7 +49,7 @@
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
-        for ( Iterator j = getDependencies().iterator(); j.hasNext(); )
+        for ( Iterator j = ProjectUtils.getDependencies( project ).iterator(); 
j.hasNext(); )
         {
             Artifact artifact = (Artifact) j.next();
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/AssemblyIncludesArtifactFilter.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/AssemblyIncludesArtifactFilter.java?rev=416562&r1=416561&r2=416562&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/AssemblyIncludesArtifactFilter.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/AssemblyIncludesArtifactFilter.java
 Thu Jun 22 21:33:55 2006
@@ -51,12 +51,13 @@
     {
         String shortId = artifact.getGroupId() + ":" + 
artifact.getArtifactId();
         String id = artifact.getDependencyConflictId();
-
+        
         boolean matched = false;
         for ( Iterator i = patterns.iterator(); i.hasNext() && !matched; )
         {
             // TODO: what about wildcards? Just specifying groups? versions?
             String pattern = (String) i.next();
+            
             if ( id.equals( pattern ) )
             {
                 matched = true;

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java?rev=416562&r1=416561&r2=416562&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/repository/DefaultRepositoryAssembler.java
 Thu Jun 22 21:33:55 2006
@@ -16,7 +16,25 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Field;
+import java.security.NoSuchAlgorithmException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -31,8 +49,11 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.plugin.assembly.filter.AssemblyExcludesArtifactFilter;
+import org.apache.maven.plugin.assembly.filter.AssemblyIncludesArtifactFilter;
 import org.apache.maven.plugin.assembly.utils.DigestUtils;
 import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
 import org.apache.maven.plugins.assembly.model.Repository;
@@ -44,21 +65,6 @@
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
-import java.lang.reflect.Field;
-import java.security.NoSuchAlgorithmException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TimeZone;
-
 /**
  * @author Jason van Zyl
  */
@@ -128,7 +134,56 @@
             throw new RepositoryAssemblyException( "Error invalidating the 
processed project cache.", e );
         }
 
-        ArtifactFilter filter = new ScopeArtifactFilter( 
Artifact.SCOPE_RUNTIME );
+        AndArtifactFilter filter = new AndArtifactFilter();
+
+        ArtifactFilter scopeFilter = new ScopeArtifactFilter( 
Artifact.SCOPE_RUNTIME );
+        filter.add( scopeFilter );
+        
+        // 
----------------------------------------------------------------------------
+        // Includes
+        //
+        // We'll take everything if no includes are specified to try and make 
this
+        // process more maintainable. Don't want to have to update the assembly
+        // descriptor everytime the POM is updated.
+        // 
----------------------------------------------------------------------------
+
+        if ( repository.getIncludes().isEmpty() )
+        {
+            List patterns = new ArrayList();
+            
+            Set projectArtifacts = project.getDependencyArtifacts();
+            
+            if ( projectArtifacts != null )
+            {
+                for ( Iterator it = projectArtifacts.iterator(); it.hasNext(); 
)
+                {
+                    Artifact artifact = (Artifact) it.next();
+                    
+                    patterns.add( artifact.getDependencyConflictId() );
+                }
+            }
+            
+            AssemblyIncludesArtifactFilter includeFilter = new 
AssemblyIncludesArtifactFilter( patterns, true );
+            
+            filter.add( includeFilter );
+        }
+        else
+        {
+            filter.add( new AssemblyIncludesArtifactFilter( 
repository.getIncludes(), true ) );
+        }
+
+        // 
----------------------------------------------------------------------------
+        // Excludes
+        //
+        // We still want to make it easy to exclude a few things even if we 
slurp
+        // up everything.
+        // 
----------------------------------------------------------------------------
+
+        if ( !repository.getExcludes().isEmpty() )
+        {
+            filter.add( new AssemblyExcludesArtifactFilter( 
repository.getExcludes(), true ) );
+        }
+
         try
         {
             // Now that we have the graph, let's try to align it to versions 
that we want and remove

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java?rev=416562&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
 Thu Jun 22 21:33:55 2006
@@ -0,0 +1,80 @@
+package org.apache.maven.plugin.assembly.utils;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.plugin.assembly.filter.AssemblyExcludesArtifactFilter;
+import org.apache.maven.plugin.assembly.filter.AssemblyIncludesArtifactFilter;
+import org.apache.maven.project.MavenProject;
+
+public final class FilterUtils
+{
+    
+    private FilterUtils()
+    {
+    }
+
+    public static void filterProjects( Set projects, List includes, List 
excludes, boolean actTransitively )
+    {
+        AndArtifactFilter filter = new AndArtifactFilter();
+
+        if ( !includes.isEmpty() )
+        {
+            filter.add( new AssemblyIncludesArtifactFilter( includes, 
actTransitively ) );
+        }
+        if ( !excludes.isEmpty() )
+        {
+            filter.add( new AssemblyExcludesArtifactFilter( excludes, 
actTransitively ) );
+        }
+        
+        for ( Iterator it = projects.iterator(); it.hasNext(); )
+        {
+            MavenProject project = (MavenProject) it.next();
+            Artifact artifact = project.getArtifact();
+            
+            if ( !filter.include( artifact ) )
+            {
+                it.remove();
+            }
+        }
+    }
+
+    public static void filterArtifacts( Set artifacts, List includes, List 
excludes, boolean actTransitively, List additionalFilters )
+    {
+        AndArtifactFilter filter = new AndArtifactFilter();
+        
+        if ( additionalFilters != null && !additionalFilters.isEmpty() )
+        {
+            for ( Iterator it = additionalFilters.iterator(); it.hasNext(); )
+            {
+                ArtifactFilter additionalFilter = (ArtifactFilter) it.next();
+                
+                filter.add( additionalFilter );
+            }
+        }
+
+        if ( !includes.isEmpty() )
+        {
+            filter.add( new AssemblyIncludesArtifactFilter( includes, 
actTransitively ) );
+        }
+        if ( !excludes.isEmpty() )
+        {
+            filter.add( new AssemblyExcludesArtifactFilter( excludes, 
actTransitively ) );
+        }
+        
+        for ( Iterator it = artifacts.iterator(); it.hasNext(); )
+        {
+            Artifact artifact = (Artifact) it.next();
+            
+            if ( !filter.include( artifact ) )
+            {
+                it.remove();
+            }
+        }
+    }
+
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/FilterUtils.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java?rev=416562&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
 Thu Jun 22 21:33:55 2006
@@ -0,0 +1,42 @@
+package org.apache.maven.plugin.assembly.utils;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.MavenProject;
+
+public final class ProjectUtils
+{
+    
+    private ProjectUtils()
+    {
+    }
+
+    /**
+     * Retrieves all artifact dependencies.
+     *
+     * @return A HashSet of artifacts
+     */
+    public static Set getDependencies( MavenProject project )
+    {
+        Set dependenciesSet = new HashSet();
+
+        if ( project.getArtifact() != null && project.getArtifact().getFile() 
!= null )
+        {
+            dependenciesSet.add( project.getArtifact() );
+        }
+
+        Set projectArtifacts = project.getArtifacts();
+        if ( projectArtifacts != null )
+        {
+            dependenciesSet.addAll( projectArtifacts );
+        }
+
+        return dependenciesSet;
+    }
+
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/ProjectUtils.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"


Reply via email to