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"