Author: jdcasey Date: Mon Feb 18 12:06:17 2008 New Revision: 628856 URL: http://svn.apache.org/viewvc?rev=628856&view=rev Log: [MASSEMBLY-274] Modifying the directory scanner logic used to scan an assembly descriptor directory to use default excludes, and only search for **/*.xml. Adding an integration test and unit test to cover this. Patches submitted by: Paul Gier and Benjamin Bentmann NOTE: I added the unit test method myself.
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt (with props) Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt?rev=628856&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt Mon Feb 18 12:06:17 2008 @@ -0,0 +1 @@ +clean org.apache.maven.plugins:maven-assembly-plugin:testing:directory Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/goals.txt ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml?rev=628856&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml Mon Feb 18 12:06:17 2008 @@ -0,0 +1,35 @@ +<?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>org.test</groupId> + <artifactId>parent</artifactId> + <version>1.0</version> + + <name>Parent</name> + + <dependencies> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.0.4</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-assembly-plugin</artifactId><version>testing</version> + <configuration> + <descriptorSourceDirectory>src/assemble</descriptorSourceDirectory> + </configuration> + </plugin> + </plugins> + </build> +</project> Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/pom.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml?rev=628856&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml Mon Feb 18 12:06:17 2008 @@ -0,0 +1,16 @@ + +<assembly> + <id>bindir</id> + <includeBaseDirectory>false</includeBaseDirectory> + <formats> + <format>dir</format> + </formats> + <dependencySets> + <dependencySet> + <includes> + <include>commons-logging:commons-logging</include> + </includes> + <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping> + </dependencySet> + </dependencySets> +</assembly> Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/bin.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt?rev=628856&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt Mon Feb 18 12:06:17 2008 @@ -0,0 +1 @@ +This file is junk and should not be picked up as a descriptor. Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/basic-features/descriptorDirectoryScan/src/assemble/readme.txt ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=628856&r1=628855&r2=628856&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Mon Feb 18 12:06:17 2008 @@ -156,7 +156,8 @@ DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir( descriptorSourceDirectory ); - scanner.setIncludes( new String[]{ "**/*" } ); + scanner.setIncludes( new String[]{ "**/*.xml" } ); + scanner.addDefaultExcludes(); try { Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java?rev=628856&r1=628855&r2=628856&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java (original) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Mon Feb 18 12:06:17 2008 @@ -328,9 +328,9 @@ assertNotNull( depSets ); assertEquals( 3, depSets.size() ); - assertEquals( Artifact.SCOPE_RUNTIME, ((DependencySet) depSets.get( 0 )).getScope() ); - assertEquals( Artifact.SCOPE_COMPILE, ((DependencySet) depSets.get( 1 )).getScope() ); - assertEquals( Artifact.SCOPE_SYSTEM, ((DependencySet) depSets.get( 2 )).getScope() ); + assertEquals( Artifact.SCOPE_RUNTIME, ( (DependencySet) depSets.get( 0 ) ).getScope() ); + assertEquals( Artifact.SCOPE_COMPILE, ( (DependencySet) depSets.get( 1 ) ).getScope() ); + assertEquals( Artifact.SCOPE_SYSTEM, ( (DependencySet) depSets.get( 2 ) ).getScope() ); } public void testMergeComponentWithAssembly_ShouldAddOneRepositoryToExistingListOfTwo() @@ -361,9 +361,9 @@ assertNotNull( depSets ); assertEquals( 3, depSets.size() ); - assertEquals( Artifact.SCOPE_RUNTIME, ((Repository) depSets.get( 0 )).getScope() ); - assertEquals( Artifact.SCOPE_COMPILE, ((Repository) depSets.get( 1 )).getScope() ); - assertEquals( Artifact.SCOPE_SYSTEM, ((Repository) depSets.get( 2 )).getScope() ); + assertEquals( Artifact.SCOPE_RUNTIME, ( (Repository) depSets.get( 0 ) ).getScope() ); + assertEquals( Artifact.SCOPE_COMPILE, ( (Repository) depSets.get( 1 ) ).getScope() ); + assertEquals( Artifact.SCOPE_SYSTEM, ( (Repository) depSets.get( 2 ) ).getScope() ); } public void testMergeComponentWithAssembly_ShouldAddOneContainerDescriptorHandlerToExistingListOfTwo() @@ -395,9 +395,9 @@ assertEquals( 3, result.size() ); Iterator it = result.iterator(); - assertEquals( "one", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() ); - assertEquals( "two", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() ); - assertEquals( "three", ((ContainerDescriptorHandlerConfig) it.next()).getHandlerName() ); + assertEquals( "one", ( (ContainerDescriptorHandlerConfig) it.next() ).getHandlerName() ); + assertEquals( "two", ( (ContainerDescriptorHandlerConfig) it.next() ).getHandlerName() ); + assertEquals( "three", ( (ContainerDescriptorHandlerConfig) it.next() ).getHandlerName() ); } // FIXME: Deep merging should take place... @@ -534,7 +534,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -581,7 +583,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -589,7 +593,7 @@ assertEquals( 1, fileSets.size() ); - assertEquals( "/site", ((FileSet) fileSets.get( 0 )).getOutputDirectory() ); + assertEquals( "/site", ( (FileSet) fileSets.get( 0 ) ).getOutputDirectory() ); mockManager.verifyAll(); } @@ -632,7 +636,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -640,7 +646,7 @@ assertEquals( 1, fileSets.size() ); - assertEquals( "/site", ((FileSet) fileSets.get( 0 )).getOutputDirectory() ); + assertEquals( "/site", ( (FileSet) fileSets.get( 0 ) ).getOutputDirectory() ); mockManager.verifyAll(); } @@ -702,7 +708,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -710,7 +718,7 @@ assertEquals( 1, fileSets.size() ); - assertEquals( "/dir", ((FileSet) fileSets.get( 0 )).getDirectory() ); + assertEquals( "/dir", ( (FileSet) fileSets.get( 0 ) ).getDirectory() ); mockManager.verifyAll(); } @@ -772,7 +780,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -818,7 +828,9 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().readAssembly( sr, "testLocation", configSource ); + Assembly result = new DefaultAssemblyReader().readAssembly( sr, + "testLocation", + configSource ); assertEquals( "group-assembly", result.getId() ); @@ -844,7 +856,8 @@ configSourceControl.setReturnValue( basedir, MockControl.ZERO_OR_MORE ); configSource.getProject(); - configSourceControl.setReturnValue( new MavenProject( new Model() ), MockControl.ZERO_OR_MORE ); + configSourceControl.setReturnValue( new MavenProject( new Model() ), + MockControl.ZERO_OR_MORE ); configSource.isSiteIncluded(); configSourceControl.setReturnValue( false, MockControl.ZERO_OR_MORE ); @@ -862,7 +875,8 @@ mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().getAssemblyFromDescriptorFile( assemblyFile, configSource ); + Assembly result = new DefaultAssemblyReader().getAssemblyFromDescriptorFile( assemblyFile, + configSource ); assertEquals( assembly.getId(), result.getId() ); @@ -878,14 +892,16 @@ configSourceControl.setReturnValue( basedir, MockControl.ZERO_OR_MORE ); configSource.getProject(); - configSourceControl.setReturnValue( new MavenProject( new Model() ), MockControl.ZERO_OR_MORE ); + configSourceControl.setReturnValue( new MavenProject( new Model() ), + MockControl.ZERO_OR_MORE ); configSource.isSiteIncluded(); configSourceControl.setReturnValue( false, MockControl.ZERO_OR_MORE ); mockManager.replayAll(); - Assembly result = new DefaultAssemblyReader().getAssemblyForDescriptorReference( "bin", configSource ); + Assembly result = new DefaultAssemblyReader().getAssemblyForDescriptorReference( "bin", + configSource ); assertEquals( "bin", result.getId() ); @@ -907,7 +923,7 @@ List files = writeAssembliesToFile( Collections.singletonList( assembly ), basedir ); - String assemblyFile = ( String ) files.get( 0 ); + String assemblyFile = (String) files.get( 0 ); List assemblies = performReadAssemblies( basedir, assemblyFile, null, null, null, null ); @@ -951,7 +967,12 @@ List files = writeAssembliesToFile( assemblies, basedir ); - List results = performReadAssemblies( basedir, null, null, (String[]) files.toArray( new String[0] ), null, null ); + List results = performReadAssemblies( basedir, + null, + null, + (String[]) files.toArray( new String[0] ), + null, + null ); assertNotNull( results ); assertEquals( 2, results.size() ); @@ -970,7 +991,10 @@ { File basedir = fileManager.createTempDir(); - List assemblies = performReadAssemblies( basedir, null, null, null, new String[] { "bin", "src" }, null ); + List assemblies = performReadAssemblies( basedir, null, null, null, new String[] { + "bin", + "src" + }, null ); assertNotNull( assemblies ); assertEquals( 2, assemblies.size() ); @@ -1015,7 +1039,41 @@ assertEquals( assembly2.getId(), result2.getId() ); } - private List writeAssembliesToFile( List assemblies, File dir ) + public void testReadAssemblies_ShouldGetTwoAssemblyDescriptorsFromDirectoryWithThreeFiles() + throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException + { + Assembly assembly1 = new Assembly(); + assembly1.setId( "test" ); + + Assembly assembly2 = new Assembly(); + assembly2.setId( "test2" ); + + List assemblies = new ArrayList(); + assemblies.add( assembly1 ); + assemblies.add( assembly2 ); + + File basedir = fileManager.createTempDir(); + + writeAssembliesToFile( assemblies, basedir ); + + fileManager.createFile( basedir, "readme.txt", "This is just a readme file, not a descriptor." ); + + List results = performReadAssemblies( basedir, null, null, null, null, basedir ); + + assertNotNull( results ); + assertEquals( 2, results.size() ); + + Assembly result1 = (Assembly) assemblies.get( 0 ); + + assertEquals( assembly1.getId(), result1.getId() ); + + Assembly result2 = (Assembly) assemblies.get( 1 ); + + assertEquals( assembly2.getId(), result2.getId() ); + } + + private List writeAssembliesToFile( List assemblies, + File dir ) throws IOException { List files = new ArrayList(); @@ -1043,8 +1101,12 @@ return files; } - private List performReadAssemblies( File basedir, String descriptor, String descriptorRef, String[] descriptors, - String[] descriptorRefs, File descriptorDir ) + private List performReadAssemblies( File basedir, + String descriptor, + String descriptorRef, + String[] descriptors, + String[] descriptorRefs, + File descriptorDir ) throws AssemblyReadException, InvalidAssemblerConfigurationException { configSource.getDescriptor(); @@ -1066,7 +1128,8 @@ configSourceControl.setReturnValue( basedir, MockControl.ZERO_OR_MORE ); configSource.getProject(); - configSourceControl.setReturnValue( new MavenProject( new Model() ), MockControl.ZERO_OR_MORE ); + configSourceControl.setReturnValue( new MavenProject( new Model() ), + MockControl.ZERO_OR_MORE ); configSource.isSiteIncluded(); configSourceControl.setReturnValue( false, MockControl.ZERO_OR_MORE );