HBASE-16351 Improve error reporting for license failures

Signed-off-by: Sean Busbey <busbey@apache.org>
This commit is contained in:
Mike Drob 2017-06-16 21:53:13 -05:00 committed by Sean Busbey
parent af25940b25
commit be559f1eb8
3 changed files with 81 additions and 16 deletions

View File

@ -1550,7 +1550,27 @@ ${dep.scm.url}
#thrift_license()
#end
## Note that this will fail the build if we don't have a license. update supplemental-models.
#if( !(${dep.licenses[0].name.contains("Apache License, Version 2.0")} || ${dep.licenses[0].name.contains("The Apache Software License, Version 2.0")}) )
#if( ${dep.licenses.isEmpty()} )
--
ERROR: ${dep.name} dependency found without license information!
Please find the appropriate license and update supplemental-models.xml or
revert the change that added this dependency.
More info on the dependency:
<groupId>${dep.groupId}</groupId>
<artifactId>${dep.artifactId}</artifactId>
<version>${dep.version}</version>
maven central search
g:${dep.groupId} AND a:${dep.artifactId} AND v:${dep.version}
project website
${dep.url}
project source
${dep.scm.url}
#elseif( !(${dep.licenses[0].name.contains("Apache License, Version 2.0")} || ${dep.licenses[0].name.contains("The Apache Software License, Version 2.0")}) )
#if( ${dep.licenses[0].name.contains("CDDL")} )
#if( ${dep.licenses[0].name.contains("1.0")} )
#set($aggregated = $cddl_1_0.add($dep))
@ -1576,7 +1596,7 @@ This product includes ${dep.name} licensed under the ${dep.licenses[0].name}.
${dep.licenses[0].comments}
#if(!(${non_aggregate_fine.contains($dep.licenses[0].name)}))
Please check ^^^^^^^^^^^^ this License for acceptability here:
ERROR: Please check ^^^^^^^^^^^^ this License for acceptability here:
https://www.apache.org/legal/resolved
@ -1596,12 +1616,6 @@ project website
${dep.url}
project source
${dep.scm.url}
## fail the template. If you're looking at the source LICENSE.vm
## file based on a stacktrace or exception message, you need to find
## the generated LICENSE file that has the actual dependency info printed.
#set($empty = [])
${empty[0]}
#end
#end
#end

View File

@ -270,14 +270,7 @@ project website
${dep.url}
project source
${dep.scm.url}
## fail the template. If you're looking at the source NOTICE.vm
## file based on a stacktrace or exception message, you need to find
## the generated NOTICE file that has the actual dependency info printed.
${dep.license[0]}
#end
#else
#if( !(${dep.licenses[0].name.contains("BSD")} || ${dep.licenses[0].name.contains("MIT")}) )
#if( !(${dep.licenses[0].name.equals("Public Domain")}) )
#if( !(${dep.licenses[0].name.contains("Apache Software License, Version 2.0")}) )
@ -309,6 +302,7 @@ For source see '${dep.url}'.
#end
#end
#end
#end
## Print out jetty
#if(${jetty})
#jetty_notice(${jetty-with-crypt})

57
pom.xml
View File

@ -900,6 +900,24 @@
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>negate-license-bundles-property</id>
<goals>
<goal>bsh-property</goal>
</goals>
<configuration>
<source>skip.license.check = !${license.bundles.dependencies};</source>
<properties>
<property>skip.license.check</property>
</properties>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
@ -997,6 +1015,41 @@
</rules>
</configuration>
</execution>
<execution>
<id>check-aggregate-license</id>
<!-- must check after LICENSE is built at 'generate-resources' -->
<phase>process-resources</phase>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<evaluateBeanshell>
<condition>
File license = new File("${license.aggregate.path}");
// Beanshell does not support try-with-resources,
// so we must close this scanner manually
Scanner scanner = new Scanner(license);
while (scanner.hasNextLine()) {
if (scanner.nextLine().startsWith("ERROR:")) {
scanner.close();
return false;
}
}
scanner.close();
return true;
</condition>
<message>
License errors detected, for more detail find ERROR in
${license.aggregate.path}
</message>
</evaluateBeanshell>
</rules>
<skip>${skip.license.check}</skip>
</configuration>
</execution>
</executions>
</plugin>
<!-- parent-module only plugins -->
@ -1258,6 +1311,10 @@
<license.bundles.bootstrap>false</license.bundles.bootstrap>
<!-- modules that include jquery in their source tree should set true -->
<license.bundles.jquery>false</license.bundles.jquery>
<!-- where to find the generated LICENSE files -->
<license.aggregate.path>
${project.build.directory}/maven-shared-archive-resources/META-INF/LICENSE
</license.aggregate.path>
<tar.name>${project.build.finalName}.tar.gz</tar.name>
<maven.build.timestamp.format>
yyyy-MM-dd'T'HH:mm