Index: src/test/java/org/apache/maven/plugin/war/WarMojoTest.java
===================================================================
--- src/test/java/org/apache/maven/plugin/war/WarMojoTest.java	(revision 796856)
+++ src/test/java/org/apache/maven/plugin/war/WarMojoTest.java	(working copy)
@@ -380,7 +380,43 @@
                           new String[]{null, null} );
     }
 
+    public void testUseDefaultExcludes()
+        throws Exception
+    {
+        String testId = "UseDefaultExcludes";
+        MavenProject4CopyConstructor project = new MavenProject4CopyConstructor();
+        String outputDir = getTestDirectory().getAbsolutePath() + "/" + testId + "-output";
+        File webAppDirectory = new File( getTestDirectory(), testId );
+        WarArtifact4CCStub warArtifact = new WarArtifact4CCStub( getBasedir() );
+        String warName = "nodefaultexcludes";
+        File webAppSource = createWebAppSource( testId );
+        File svnFile = new File( webAppSource, ".svn/entries" );
+        createFile(svnFile );
 
+        File classesDir = createClassesDir( testId, true );
+        File xmlSource = createXMLConfigDir( testId, new String[]{"web.xml"} );
+
+        project.setArtifact( warArtifact );
+        this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, project );
+        setVariableValueToObject( mojo, "outputDirectory", outputDir );
+        setVariableValueToObject( mojo, "warName", warName );
+        mojo.setWebXml( new File( xmlSource, "web.xml" ) );
+
+        mojo.setUseDefaultExcludes(false);
+
+        mojo.execute();
+
+        //validate jar file
+        File expectedJarFile = new File( outputDir, warName + ".war" );
+        assertJarContent( expectedJarFile, new String[]{"META-INF/MANIFEST.MF", "WEB-INF/web.xml", "pansit.jsp",
+                                                        ".svn/entries",
+                                                        "org/web/app/last-exile.jsp", "META-INF/maven/org.apache.maven.test/maven-test-plugin/pom.xml",
+                                                        "META-INF/maven/org.apache.maven.test/maven-test-plugin/pom.properties"},
+            new String[]{null, mojo.getWebXml().toString(), null, null, null, null, null} );
+    }
+
+
+
     protected Map assertJarContent( final File expectedJarFile, final String[] files, final String[] filesContent )
         throws IOException
     {
@@ -403,7 +439,7 @@
         for ( int i = 0; i < files.length; i++ )
         {
             String file = files[i];
-            assertTrue( "File[" + file + "] not found in archive", jarContent.containsKey( file ) );
+            assertTrue( "File[" + file + "] not found in archive " + expectedJarFile, jarContent.containsKey( file ) );
             if ( filesContent[i] != null )
             {
                 assertEquals( "Content of file[" + file + "] does not match", filesContent[i],
@@ -413,5 +449,7 @@
         return jarContent;
     }
 
+
+
 }
 
Index: src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java	(working copy)
@@ -36,7 +36,7 @@
  * Manages the overlays.
  *
  * @author Stephane Nicoll
- * 
+ *
  * @version $Id$
  */
 public class OverlayManager
@@ -60,7 +60,7 @@
      * @throws InvalidOverlayConfigurationException
      *          if the config is invalid
      */
-    public OverlayManager( List overlays, MavenProject project, String defaultIncludes, String defaultExcludes )
+    public OverlayManager( List overlays, MavenProject project, String defaultIncludes, String defaultExcludes, boolean useDefaultExcludes )
         throws InvalidOverlayConfigurationException
     {
         this.overlays = new ArrayList();
@@ -73,11 +73,17 @@
         this.artifactsOverlays = getOverlaysAsArtifacts();
 
         // Initialize
-        initialize( defaultIncludes, defaultExcludes );
+        initialize( defaultIncludes, defaultExcludes, useDefaultExcludes );
 
     }
 
+    public OverlayManager( List overlays, MavenProject project, String defaultIncludes, String defaultExcludes )
+        throws InvalidOverlayConfigurationException
+    {
+        this(overlays, project, defaultIncludes, defaultExcludes, true);
+    }
 
+
     /**
      * Returns the resolved overlays.
      *
@@ -114,7 +120,7 @@
      * @throws InvalidOverlayConfigurationException
      *          if the configuration is invalid
      */
-    void initialize( String defaultIncludes, String defaultExcludes )
+    void initialize( String defaultIncludes, String defaultExcludes, boolean useDefaultExcludes )
         throws InvalidOverlayConfigurationException
     {
 
@@ -160,7 +166,9 @@
             {
                 // Add a default overlay for the given artifact which will be applied after
                 // the ones that have been configured
-                overlays.add( new DefaultOverlay( artifact, defaultIncludes, defaultExcludes ) );
+                Overlay overlay = new DefaultOverlay( artifact, defaultIncludes, defaultExcludes );
+                overlay.setIsUseDefaultExcludes(useDefaultExcludes);
+                overlays.add( overlay );
             }
         }
 
Index: src/main/java/org/apache/maven/plugin/war/Overlay.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/Overlay.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/Overlay.java	(working copy)
@@ -65,11 +65,13 @@
 
     private boolean skip = false;
 
+    private boolean useDefaultExcludes = true;
+
     private Artifact artifact;
-    
+
     private String targetPath;
-    
-    /** default overlay type is war */ 
+
+    /** default overlay type is war */
     private String type = "war";
 
     public Overlay()
@@ -202,6 +204,15 @@
         this.filtered = filtered;
     }
 
+    public boolean isUseDefaultExcludes()
+    {
+        return useDefaultExcludes;
+    }
+    public void setIsUseDefaultExcludes( boolean useDefaultExcludes )
+    {
+        this.useDefaultExcludes = useDefaultExcludes;
+    }
+
     public boolean shouldSkip()
     {
         return skip;
@@ -243,7 +254,7 @@
     {
         this.type = type;
     }
-    
+
     public String toString()
     {
         return " id " + getId();
Index: src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java	(working copy)
@@ -303,7 +303,19 @@
      */
     protected String escapeString;
 
+
+
     /**
+     * Whether 'default excludes' (like scm-files) must be implicitely applied. <b>Defaults to
+     * true.</b> This also works when overlaying the 'default overlays' (those that are only
+     * mentioned as a dependency).
+     *
+     * @parameter expression="${maven.war.useDefaultExcludes}" default-value="true"
+     * @since 2.1-beta-2
+     */
+    protected boolean useDefaultExcludes = true;
+
+    /**
      * The archive configuration to use.
      * See <a href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>.
      *
@@ -431,7 +443,7 @@
         getLog().info( "Assembling webapp[" + project.getArtifactId() + "] in [" + webappDirectory + "]" );
 
         final OverlayManager overlayManager =
-            new OverlayManager( overlays, project, dependentWarIncludes, dependentWarExcludes );
+            new OverlayManager( overlays, project, dependentWarIncludes, dependentWarExcludes, useDefaultExcludes);
         final List packagingTasks = getPackagingTasks( overlayManager );
         List defaultFilterWrappers = null;
         try
@@ -548,6 +560,7 @@
 
         private boolean filteringDeploymentDescriptors;
 
+
         public DefaultWarPackagingContext( File webappDirectory, final WebappStructure webappStructure,
                                            final OverlayManager overlayManager, List filterWrappers,
                                            List nonFilteredFileExtensions, boolean filteringDeploymentDescriptors,
@@ -676,6 +689,10 @@
             return this.artifactFactory;
         }
 
+        public boolean isUseDefaultExcludes() {
+            return AbstractWarMojo.this.useDefaultExcludes;
+        }
+
     }
 
     public MavenProject getProject()
@@ -878,4 +895,9 @@
     {
         this.artifactFactory = artifactFactory;
     }
+
+    public void setUseDefaultExcludes( boolean useDefaultExcludes )
+    {
+        this.useDefaultExcludes = useDefaultExcludes;
+    }
 }
Index: src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/packaging/WarPackagingContext.java	(working copy)
@@ -158,7 +158,7 @@
      * @return the list of registered overlays, including the current project
      */
     List getOwnerIds();
-    
+
     /**
      * Returns the {@link MavenFileFilter} instance to use.
      *
@@ -166,13 +166,13 @@
      * @since 2.1-alpha-2
      */
     MavenFileFilter getMavenFileFilter();
-    
+
     /**
      * @return {@link List} of {@link FilterWrapper}
      * @since 2.1-alpha-2
      */
     List getFilterWrappers();
-    
+
     /**
      * Specify if the given <tt>fileName</tt> belongs to the list of extensions
      * that must not be filtered
@@ -182,8 +182,10 @@
      * @since 2.1-alpha-2
      */
     boolean isNonFilteredExtension( String fileName );
-    
+
     boolean isFilteringDeploymentDescriptors();
-    
+
     ArtifactFactory getArtifactFactory();
+
+    boolean isUseDefaultExcludes();
 }
Index: src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/packaging/AbstractWarPackagingTask.java	(working copy)
@@ -54,6 +54,8 @@
 
     public static final String LIB_PATH = "WEB-INF/lib/";
 
+
+
     /**
      * Copies the files if possible with an optional target prefix.
      * <p/>
@@ -79,7 +81,9 @@
     {
         for ( Iterator iter = sourceFilesSet.iterator(); iter.hasNext(); )
         {
+
             final String fileToCopyName = (String) iter.next();
+
             final File sourceFile = new File( sourceBaseDir, fileToCopyName );
 
             String destinationFileName;
@@ -91,10 +95,10 @@
             {
                 destinationFileName = targetPrefix + fileToCopyName;
             }
-            
 
+
             if ( filtered
-                && !context.isNonFilteredExtension( sourceFile.getName() ) ) 
+                && !context.isNonFilteredExtension( sourceFile.getName() ) )
             {
                 copyFilteredFile( sourceId, context, sourceFile, destinationFileName );
             }
@@ -307,7 +311,7 @@
      * @param excludes the excludes
      * @return the files to copy
      */
-    protected PathSet getFilesToIncludes( File baseDir, String[] includes, String[] excludes )
+    protected PathSet getFilesToIncludes( File baseDir, String[] includes, String[] excludes, boolean useDefaultExcludes )
     {
         final DirectoryScanner scanner = new DirectoryScanner();
         scanner.setBasedir( baseDir );
@@ -316,7 +320,9 @@
         {
             scanner.setExcludes( excludes );
         }
-        scanner.addDefaultExcludes();
+        if (useDefaultExcludes) {
+            scanner.addDefaultExcludes();
+        }
 
         if ( includes != null && includes.length > 0 )
         {
Index: src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java	(working copy)
@@ -63,7 +63,7 @@
             }
             else
             {
-                final PathSet sources = getFilesToIncludes( context.getClassesDirectory(), null, null );
+                final PathSet sources = getFilesToIncludes( context.getClassesDirectory(), null, null, context.isUseDefaultExcludes() );
                 try
                 {
                     copyFiles( Overlay.currentProjectInstance().getId(), context, context.getClassesDirectory(),
Index: src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java	(working copy)
@@ -86,7 +86,7 @@
 
         handleWebResources( context );
 
-        handeWebAppSourceDirectory( context );
+        handleWebAppSourceDirectory( context );
 
         // Debug mode: dump the path set for the current build
         PathSet pathSet = context.getWebappStructure().getStructure( "currentBuild" );
@@ -114,6 +114,8 @@
     protected void handleWebResources( WarPackagingContext context )
         throws MojoExecutionException
     {
+
+
         for ( int i = 0; i < webResources.length; i++ )
         {
             Resource resource = webResources[i];
@@ -144,7 +146,7 @@
      * @param context the packaging context
      * @throws MojoExecutionException if the sources could not be copied
      */
-    protected void handeWebAppSourceDirectory( WarPackagingContext context )
+    protected void handleWebAppSourceDirectory( WarPackagingContext context )
         throws MojoExecutionException
     {
         if ( !context.getWebappSourceDirectory().exists() )
@@ -157,7 +159,7 @@
             context.getLog().info( "Copying webapp resources[" + context.getWebappSourceDirectory() + "]" );
             final PathSet sources =
                 getFilesToIncludes( context.getWebappSourceDirectory(), context.getWebappSourceIncludes(),
-                                    context.getWebappSourceExcludes() );
+                                    context.getWebappSourceExcludes() , context.isUseDefaultExcludes());
 
             try
             {
Index: src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java
===================================================================
--- src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java	(revision 796856)
+++ src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java	(working copy)
@@ -31,7 +31,7 @@
  * Handles an overlay.
  *
  * @author Stephane Nicoll
- * 
+ *
  * @version $Id$
  */
 public class OverlayPackagingTask
@@ -73,7 +73,7 @@
                 final File tmpDir = unpackOverlay( context, overlay );
 
                 // Step2: setup
-                final PathSet includes = getFilesToIncludes( tmpDir, overlay.getIncludes(), overlay.getExcludes() );
+                final PathSet includes = getFilesToIncludes( tmpDir, overlay.getIncludes(), overlay.getExcludes(), overlay.isUseDefaultExcludes() );
 
                 // Copy
                 if ( null == overlay.getTargetPath() )

