LUCENE-5209: Allow the license checker to optionally avoid check sum comparisons on SNAPSHOT dependencies.

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1523356 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Mark Robert Miller 2013-09-14 23:33:02 +00:00
parent c3fd78cae6
commit 2eb1750f4d
2 changed files with 47 additions and 35 deletions

View File

@ -57,7 +57,7 @@
<sequential> <sequential>
<!-- LICENSE and NOTICE verification macro. --> <!-- LICENSE and NOTICE verification macro. -->
<echo>License check under: @{dir}</echo> <echo>License check under: @{dir}</echo>
<licenses licenseDirectory="@{licensedir}"> <licenses licenseDirectory="@{licensedir}" skipSnapshotsChecksum="${skipSnapshotsChecksum}">
<fileset dir="@{dir}"> <fileset dir="@{dir}">
<include name="**/*.jar" /> <include name="**/*.jar" />
<!-- Speed up scanning a bit. --> <!-- Speed up scanning a bit. -->

View File

@ -54,6 +54,8 @@ public class LicenseCheckTask extends Task {
private static final int CHECKSUM_BUFFER_SIZE = 8 * 1024; private static final int CHECKSUM_BUFFER_SIZE = 8 * 1024;
private static final int CHECKSUM_BYTE_MASK = 0xFF; private static final int CHECKSUM_BYTE_MASK = 0xFF;
private boolean skipSnapshotsChecksum;
/** /**
* All JAR files to check. * All JAR files to check.
*/ */
@ -104,6 +106,10 @@ public class LicenseCheckTask extends Task {
licenseDirectory = file; licenseDirectory = file;
} }
public void setSkipSnapshotsChecksum(boolean skipSnapshotsChecksum) {
this.skipSnapshotsChecksum = skipSnapshotsChecksum;
}
/** /**
* Execute the task. * Execute the task.
*/ */
@ -113,6 +119,7 @@ public class LicenseCheckTask extends Task {
throw new BuildException("Expected an embedded <licenseMapper>."); throw new BuildException("Expected an embedded <licenseMapper>.");
} }
if (skipSnapshotsChecksum) log("Skipping checksum for SNAPSHOT dependencies", Project.MSG_INFO);
jarResources.setProject(getProject()); jarResources.setProject(getProject());
processJars(); processJars();
@ -161,11 +168,13 @@ public class LicenseCheckTask extends Task {
private boolean checkJarFile(File jarFile) { private boolean checkJarFile(File jarFile) {
log("Scanning: " + jarFile.getPath(), verboseLevel); log("Scanning: " + jarFile.getPath(), verboseLevel);
if (!skipSnapshotsChecksum || !jarFile.getName().contains("-SNAPSHOT")) {
// validate the jar matches against our expected hash // validate the jar matches against our expected hash
final File checksumFile = new File(licenseDirectory, final File checksumFile = new File(licenseDirectory,
jarFile.getName() + "." + CHECKSUM_TYPE); jarFile.getName() + "." + CHECKSUM_TYPE);
if (! (checksumFile.exists() && checksumFile.canRead()) ) { if (! (checksumFile.exists() && checksumFile.canRead()) ) {
log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR); log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR);
log("EXPECTED " +CHECKSUM_TYPE+ " checksum file : " + checksumFile.getPath(), Project.MSG_ERR);
this.failures = true; this.failures = true;
return false; return false;
} else { } else {
@ -204,6 +213,9 @@ public class LicenseCheckTask extends Task {
throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", 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. // Get the expected license path base from the mapper and search for license files.
Map<File, LicenseType> foundLicenses = new LinkedHashMap<File, LicenseType>(); Map<File, LicenseType> foundLicenses = new LinkedHashMap<File, LicenseType>();