License headers and notices

Drill uses the standard Apache license header checker:

Doing license header checks

The license checks are enabled by default, bound to the validate build phase. They can be disabled using the Maven argumment -Drat.skip=true. RAT will accept a license header appearing in a Javadoc comment (which opens with /**) but these result in noise the generated Javadoc HTML. Any instances of such headers can be found using a pattern, e.g.

grep -Pzo '/\*\*\n \* Licensed to the Apache Software Foundation' **/*.java

and corrected by replacing the opening /** with /*.

Auto formatting license headers

The Maven build does not do automatic insertion of license headers to avoid mislicensing code under other open source licenses that may have been brought into the Drill codebase with the exception of generated code (see the protocol module).

Generating the binary distribution LICENSE

Drill makes use of org.codehaus.mojo:license-maven-plugin to generate the LICENSE file bundled with its binary distribution (distribution/src/main/resources/LICENSE). This plugin binds to the generate-resources build phase and combines undetectable license notices that are manually maintained in a base Freemarket template (see distribution/src/main/resources/licenses/) with autodetected license notices. It can be run manually as follows.

cd distribution
mvn license:add-third-party

If a dependency that the plugin cannot lookup a license for has been introduced then it will fail with an instruction to add determine the license manually and add it to the MISSING.properties file.