### Eclipse Workspace Patch 1.0 #P maven-war-plugin Index: src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java =================================================================== --- src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java (revision 787264) +++ src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java (working copy) @@ -32,6 +32,7 @@ import org.apache.maven.shared.filtering.MavenFilteringException; import org.codehaus.plexus.archiver.ArchiverException; import org.codehaus.plexus.archiver.UnArchiver; +import org.codehaus.plexus.archiver.jar.JarArchiver; import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; import org.codehaus.plexus.interpolation.InterpolationException; import org.codehaus.plexus.util.DirectoryScanner; @@ -91,10 +92,10 @@ { destinationFileName = targetPrefix + fileToCopyName; } - + if ( filtered - && !context.isNonFilteredExtension( sourceFile.getName() ) ) + && !context.isNonFilteredExtension( sourceFile.getName() ) ) { copyFilteredFile( sourceId, context, sourceFile, destinationFileName ); } @@ -290,10 +291,28 @@ } else { - FileUtils.copyFile( source.getCanonicalFile(), destination ); - // preserve timestamp - destination.setLastModified( source.lastModified() ); - context.getLog().debug( " + " + targetFilename + " has been copied." ); + if(source.isDirectory()) + { + context.getLog().warn( " + " + targetFilename + " is packaged from the source folder" ); + + try { + JarArchiver archiver = context.getJarArchiver(); + archiver.addDirectory(source); + archiver.setDestFile(destination); + archiver.createArchive(); + } catch (ArchiverException e) { + String msg = "Failed to create " + targetFilename; + context.getLog().error( msg, e ); + throw new RuntimeException(msg, e); + } + } + else + { + FileUtils.copyFile( source.getCanonicalFile(), destination ); + // preserve timestamp + destination.setLastModified( source.lastModified() ); + context.getLog().debug( " + " + targetFilename + " has been copied." ); + } return true; } }