Author: jdcasey Date: Tue Apr 3 08:51:28 2007 New Revision: 525185 URL: http://svn.apache.org/viewvc?view=rev&rev=525185 Log: [MASSEMBLY-194] Adding useTransitiveFiltering flag to dependencySets (default value == false). When false, includes/excludes apply only to the current artifact, not to the list of artifacts that bring this artifact in transitively. When true, the transitive path of the current artifact is taken into account for filtering includes/excludes. By default, backward compatibility with version 2.1 of the assembly plugin means we have to set this to false.
Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/massembly-99/pom.xml maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/using-moduleSet-implied-depSet/pom.xml 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/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 Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original) +++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Tue Apr 3 08:51:28 2007 @@ -176,6 +176,7 @@ <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> <configuration> <excludes> <exclude>**/BasicAbstractAssemblyMojoFeaturesTest*</exclude> @@ -234,6 +235,9 @@ <pomExcludes> <pomExclude>**/child*/pom.xml</pomExclude> <pomExclude>**/module*/pom.xml</pomExclude> + + <!-- TODO: Fix this! It's logged in JIRA for 2.2. --> + <pomExclude>mojo-configuration/manifest-with-customEntry/pom.xml</pomExclude> </pomExcludes> <postBuildHookScript>verify.bsh</postBuildHookScript> <localRepositoryPath>${basedir}/target/local-repository</localRepositoryPath> @@ -366,4 +370,4 @@ <scope>test</scope> </dependency> </dependencies> -</project> \ No newline at end of file +</project> Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/massembly-99/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/massembly-99/pom.xml?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/massembly-99/pom.xml (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/massembly-99/pom.xml Tue Apr 3 08:51:28 2007 @@ -18,6 +18,16 @@ </dependency> </dependencies> <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + </pluginManagement> + <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId><version>testing</version> Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/using-moduleSet-implied-depSet/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/using-moduleSet-implied-depSet/pom.xml?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/using-moduleSet-implied-depSet/pom.xml (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/dependency-sets/using-moduleSet-implied-depSet/pom.xml Tue Apr 3 08:51:28 2007 @@ -17,6 +17,16 @@ </dependency> </dependencies> <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.2</version> + </plugin> + </plugins> + </pluginManagement> + <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId><version>testing</version> 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?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- 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 Apr 3 08:51:28 2007 @@ -169,7 +169,7 @@ } FilterUtils.filterArtifacts( dependencyArtifacts, dependencySet.getIncludes(), dependencySet.getExcludes(), - dependencySet.isUseStrictFiltering(), true, Collections.EMPTY_LIST, logger ); + dependencySet.isUseStrictFiltering(), dependencySet.isUseTransitiveFiltering(), Collections.EMPTY_LIST, logger ); return dependencyArtifacts; } 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?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/component.mdo Tue Apr 3 08:51:28 2007 @@ -397,6 +397,21 @@ Default scope value is "runtime". </description> </field> + <field> + <name>useTransitiveFiltering</name> + <version>1.1.0</version> + <type>boolean</type> + <defaultValue>false</defaultValue> + <description> + Determines whether the include/exclude patterns in this dependency set will be applied to + the transitive path of a given artifact. If true, and the current artifact is a transitive + dependency brought in by another artifact which matches an inclusion or exclusion pattern, + then the current artifact has the same inclusion/exclusion logic applied to it as well. By + default, this value is false, in order to preserve backward compatibility with version 2.1. + This means that includes/excludes only apply directly to the current artifact, and not to + the transitive set of artifacts which brought it in. (Since 2.2) + </description> + </field> </fields> </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?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Tue Apr 3 08:51:28 2007 @@ -517,6 +517,21 @@ Default scope value is "runtime". </description> </field> + <field> + <name>useTransitiveFiltering</name> + <version>1.1.0</version> + <type>boolean</type> + <defaultValue>false</defaultValue> + <description> + Determines whether the include/exclude patterns in this dependency set will be applied to + the transitive path of a given artifact. If true, and the current artifact is a transitive + dependency brought in by another artifact which matches an inclusion or exclusion pattern, + then the current artifact has the same inclusion/exclusion logic applied to it as well. By + default, this value is false, in order to preserve backward compatibility with version 2.1. + This means that includes/excludes only apply directly to the current artifact, and not to + the transitive set of artifacts which brought it in. (Since 2.2) + </description> + </field> </fields> </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?view=diff&rev=525185&r1=525184&r2=525185 ============================================================================== --- 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 Apr 3 08:51:28 2007 @@ -43,9 +43,8 @@ Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ); - AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), project, - macTask.projectBuilder, macTask.dependencyResolver, - logger ); + AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), project, macTask.projectBuilder, + macTask.dependencyResolver, logger ); task.addDependencySet( ds, null, macTask.configSource ); @@ -53,22 +52,19 @@ } public void testAddDependencySet_ShouldAddOneDependencyFromProjectWithoutUnpacking() - throws AssemblyFormattingException, ArchiveCreationException, IOException, - InvalidAssemblerConfigurationException + throws AssemblyFormattingException, ArchiveCreationException, IOException, InvalidAssemblerConfigurationException { verifyOneDependencyAdded( "out", false ); } public void testAddDependencySet_ShouldAddOneDependencyFromProjectUnpacked() - throws AssemblyFormattingException, ArchiveCreationException, IOException, - InvalidAssemblerConfigurationException + throws AssemblyFormattingException, ArchiveCreationException, IOException, InvalidAssemblerConfigurationException { verifyOneDependencyAdded( "out", true ); } private void verifyOneDependencyAdded( String outputLocation, boolean unpack ) - throws AssemblyFormattingException, ArchiveCreationException, IOException, - InvalidAssemblerConfigurationException + throws AssemblyFormattingException, ArchiveCreationException, IOException, InvalidAssemblerConfigurationException { MavenProject project = new MavenProject( new Model() ); @@ -109,9 +105,8 @@ Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ); - AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), project, - macTask.projectBuilder, macTask.dependencyResolver, - logger ); + AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( ds ), project, macTask.projectBuilder, + macTask.dependencyResolver, logger ); mockManager.replayAll(); @@ -139,8 +134,7 @@ mockManager.replayAll(); AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ), project, - macTask.projectBuilder, macTask.dependencyResolver, - logger ); + macTask.projectBuilder, macTask.dependencyResolver, logger ); Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource ); @@ -185,13 +179,65 @@ DependencySet dependencySet = new DependencySet(); dependencySet.addInclude( "group:artifact" ); + dependencySet.setUseTransitiveFiltering( true ); Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ); mockManager.replayAll(); - AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ), project, - null, macTask.dependencyResolver, logger ); + AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ), project, null, + macTask.dependencyResolver, logger ); + + Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource ); + + assertNotNull( result ); + assertEquals( 1, result.size() ); + assertSame( mac.artifact, result.iterator().next() ); + + mockManager.verifyAll(); + } + + public void testGetDependencyArtifacts_ShouldIgnoreTransitivePathFilteringWhenIncludeNotTransitive() + throws ArchiveCreationException, InvalidAssemblerConfigurationException + { + MavenProject project = new MavenProject( new Model() ); + + MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( mockManager ); + + Set artifacts = new HashSet(); + + MockAndControlForArtifact mac = new MockAndControlForArtifact( mockManager ); + + mac.expectGetGroupId( "group" ); + mac.expectGetArtifactId( "artifact" ); + mac.expectGetDependencyConflictId( "group:artifact:jar" ); + mac.expectGetId( "group:artifact:1.0" ); + + artifacts.add( mac.artifact ); + + MockAndControlForArtifact mac2 = new MockAndControlForArtifact( mockManager ); + + mac2.expectGetGroupId( "group2" ); + mac2.expectGetArtifactId( "artifact2" ); + mac2.expectGetDependencyConflictId( "group2:artifact2:jar" ); + mac2.expectGetId( "group2:artifact2:1.0" ); + + artifacts.add( mac2.artifact ); + + macTask.expectCSGetRepositories( null, null ); + macTask.expectResolveDependencies( artifacts ); + + DependencySet dependencySet = new DependencySet(); + + dependencySet.addInclude( "group:artifact" ); + dependencySet.setUseTransitiveFiltering( false ); + + Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ); + + mockManager.replayAll(); + + AddDependencySetsTask task = new AddDependencySetsTask( Collections.singletonList( dependencySet ), project, null, + macTask.dependencyResolver, logger ); Set result = task.resolveDependencyArtifacts( dependencySet, macTask.configSource );