Index: lucene/tools/custom-tasks.xml
===================================================================
--- lucene/tools/custom-tasks.xml	(revision 1523006)
+++ lucene/tools/custom-tasks.xml	(working copy)
@@ -57,7 +57,7 @@
     <sequential>
       <!-- LICENSE and NOTICE verification macro. -->
       <echo>License check under: @{dir}</echo>
-      <licenses licenseDirectory="@{licensedir}">
+      <licenses licenseDirectory="@{licensedir}" skipSnapshotsChecksum="${skipSnapshotsChecksum}">
         <fileset dir="@{dir}">
           <include name="**/*.jar" />
           <!-- Speed up scanning a bit. -->
Index: lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java
===================================================================
--- lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java	(revision 1523041)
+++ lucene/tools/src/java/org/apache/lucene/validation/LicenseCheckTask.java	(working copy)
@@ -54,6 +54,8 @@
   private static final int CHECKSUM_BUFFER_SIZE = 8 * 1024;
   private static final int CHECKSUM_BYTE_MASK = 0xFF;
 
+  private boolean skipSnapshotsChecksum;
+  
   /**
    * All JAR files to check.
    */
@@ -103,6 +105,10 @@
   public void setLicenseDirectory(File file) {
     licenseDirectory = file;
   }
+  
+  public void setSkipSnapshotsChecksum(boolean skipSnapshotsChecksum) {
+    this.skipSnapshotsChecksum = skipSnapshotsChecksum;
+  }
 
   /**
    * Execute the task.
@@ -113,6 +119,7 @@
       throw new BuildException("Expected an embedded <licenseMapper>.");
     }
 
+    if (skipSnapshotsChecksum) log("Skipping checksum for SNAPSHOT dependencies", Project.MSG_INFO);
     jarResources.setProject(getProject());
     processJars();
 
@@ -160,49 +167,53 @@
    */
   private boolean checkJarFile(File jarFile) {
     log("Scanning: " + jarFile.getPath(), verboseLevel);
-
-    // validate the jar matches against our expected hash
-    final File checksumFile = new File(licenseDirectory, 
-                                       jarFile.getName() + "." + CHECKSUM_TYPE);
-    if (! (checksumFile.exists() && checksumFile.canRead()) ) {
-      log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR);
-      this.failures = true;
-      return false;
-    } else {
-      final String expectedChecksum = readChecksumFile(checksumFile);
-      try {
-        final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE);
-        byte[] buf = new byte[CHECKSUM_BUFFER_SIZE];
+    
+    if (!skipSnapshotsChecksum || !jarFile.getName().contains("-SNAPSHOT")) {
+      // validate the jar matches against our expected hash
+      final File checksumFile = new File(licenseDirectory, 
+                                         jarFile.getName() + "." + CHECKSUM_TYPE);
+      if (! (checksumFile.exists() && checksumFile.canRead()) ) {
+        log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR);
+        this.failures = true;
+        return false;
+      } else {
+        final String expectedChecksum = readChecksumFile(checksumFile);
         try {
-          FileInputStream fis = new FileInputStream(jarFile);
+          final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE);
+          byte[] buf = new byte[CHECKSUM_BUFFER_SIZE];
           try {
-            DigestInputStream dis = new DigestInputStream(fis, md);
+            FileInputStream fis = new FileInputStream(jarFile);
             try {
-              while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) {
-                // NOOP
+              DigestInputStream dis = new DigestInputStream(fis, md);
+              try {
+                while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) {
+                  // NOOP
+                }
+              } finally {
+                dis.close();
               }
             } finally {
-              dis.close();
+              fis.close();
             }
-          } finally {
-            fis.close();
+          } catch (IOException ioe) {
+            throw new BuildException("IO error computing checksum of file: " + jarFile, ioe);
           }
-        } catch (IOException ioe) {
-          throw new BuildException("IO error computing checksum of file: " + jarFile, ioe);
-        }
-        final byte[] checksumBytes = md.digest();
-        final String checksum = createChecksumString(checksumBytes);
-        if ( ! checksum.equals(expectedChecksum) ) {
-          log("CHECKSUM FAILED for " + jarFile.getPath() + 
-              " (expected: \"" + expectedChecksum + "\" was: \"" + checksum + "\")", 
-              Project.MSG_ERR);
-          this.failures = true;
-          return false;
+          final byte[] checksumBytes = md.digest();
+          final String checksum = createChecksumString(checksumBytes);
+          if ( ! checksum.equals(expectedChecksum) ) {
+            log("CHECKSUM FAILED for " + jarFile.getPath() + 
+                " (expected: \"" + expectedChecksum + "\" was: \"" + checksum + "\")", 
+                Project.MSG_ERR);
+            this.failures = true;
+            return false;
+          }
+  
+        } catch (NoSuchAlgorithmException ae) {
+          throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", ae);
         }
-
-      } catch (NoSuchAlgorithmException ae) {
-        throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", ae);
       }
+    } else if (skipSnapshotsChecksum) {
+      log("Skipping jar because it is a SNAPSHOT : " + jarFile.getAbsolutePath(), Project.MSG_INFO);
     }
     
     // Get the expected license path base from the mapper and search for license files.
