anchor.diff:  ----
   pushd bom
   mvn -Dapache-release clean
  -mvn -Dapache-release org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=1000
  +mvn -Dapache-release org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=1000     # <.>
   popd
   
  -for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done > /tmp/rat-qn.txt
  -for a in `/bin/find . -name rat.txt -print`; do grep '!AL' $a; done > /tmp/rat-al.txt
  -----
  -
  -NOTE: the parent `pom.xml` in each of these locations has the `apache-rat-plugin` appropriately configured.
  -
  -This script runs over all submodules, including non-released modules.
  -
  -The command writes out a `target\rat.txt` for each submodule. missing license notes are indicated using the key `!???`.
  -The `for` command collates all the errors.
  -
  -Investigate and fix any reported violations, typically by either:
  +for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done > /tmp/rat-qn.txt            # <.>
  +for a in `/bin/find . -name rat.txt -print`; do grep '!AL' $a; done > /tmp/rat-al.txt            # <2>
  +
  +cat /tmp/rat-qn.txt
  +cat /tmp/rat-al.txt
  +----
  +
  +<.> The command writes out a `target\rat.txt` for each submodule. missing license notes are indicated using the key `!???`.
  +
  +<.> Collates all the errors.
  +
  +
  +Inspect the contents of the two `/tmp/rat-*.txt` files and fix any reported violations, typically by either:
   
   * adding genuinely missing license headers from Java (or other) source files, or
   * updating the `<excludes>` element for the `apache-rat-plugin` plugin to ignore test files, log files and any other non-source code files
  -* also look to remove any stale `<exclude>` entries
  +
  +Also, look to remove any stale `<exclude>` entries
   
   Once you've fixed all issues, run the script again to confirm that all license violations have been fixed.
   
  
positive.code: The Apache Release Audit Tool `RAT` (from the http://creadur.apache.org[Apache Creadur] project) checks for missing license header files.
  The parent `pom.xml` of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.
  
  To run the RAT tool, use:
  
  [source,bash,subs="attributes+"]
  
negative.code: Fortunately, Maven allows the missing information to be provided by configuring the `maven-remote-resources-plugin`.
  This is stored in the `src/main/appended-resources/supplemental-models.xml` file, relative to the root of each releasable module.
  
  [source,bash,subs="attributes+"]
  ----
  pushd bom
  mvn -Dgithub clean install -DskipTests     # <.>
  mvn -Dgithub license:download-licenses     # <.>
  popd
  groovy scripts/checkmissinglicenses.groovy
  ----
  <.> builds the framework.
  +
  It's necessary to have built the framework locally at least once (ok to skip tests).
  +
  The `-Dgithub` activates the "github" profile which references the exact same ``<module>``s as the official "apache-release" profile.
  <.> Captures the missing license information
  <.> Reports on the missing license information using:
  
  
  The Maven plugin creates a `license.xml` file in the `target/generated-resources` directory of each module.
  