<?xml version='1.0'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!--
This file is also used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits. TBA how to use this with SVN.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nn]
then tweak the formatting if necessary
and commit

The <action> type attribute can be add,update,fix,remove.

    Please list action attributes in the following order:
    issue - required
    type - required
    the rest are optional; order not important

    having the issue number first makes it easier to read the XML outline

-->

<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Changes in Apache Creadur RAT</title>
    <author email="dev@creadur.apache.org">Apache Creadur RAT developers</author>
  </properties>

  <body>
    <release version="0.13" date="2016-xx-xx" description="Current SNAPSHOT - to be done">
      <action issue="RAT-233" type="add" due-to="Stefan Bodewig" dev="pottlinger">
	Recognize XML-based .Net Core xproj files.
      </action>
      <action issue="RAT-226" type="add" dev="pottlinger">
        Update to latest available and compatible Apache ANT 1.9.9.
      </action>
      <action issue="RAT-222" type="fix" dev="pottlinger">
        Download section does not work if SNAPSHOT is deployed, add download of previous RAT release.
      </action>
      <action issue="RAT-224" type="fix" due-to="John Patrick" dev="pottlinger">
        Fixed example on webpage abozt usage of custom licenses.
      </action>
      <action issue="RAT-223" type="fix" due-to="Eric Friedrich" dev="pottlinger">
        Add support for Golang and Perl module files.
      </action>
    </release>

    <release version="0.12" date="2015-09-30" description=
" We now require Maven 3.0.5+ to build Rat, but as before we only require
 Maven 2.2.1+ if you want to use Rat in your own Maven projects.

We've integrated Rat into the ASF Jenkins to ensure continuous builds with various JDK versions.
">
      <action issue="RAT-215" type="fix" dev="pottlinger">
        Add WOFF2, WOFF, TTF and EOT font file extensions to binary file collection to allow faster detection as binary without reading in the files.
      </action>
      <action issue="RAT-214" type="fix" dev="pottlinger">
        Upgrade commons-compress and apache-ant due to possible security problems.
      </action>
      <action issue="RAT-213" type="fix" dev="pottlinger">
        Upgrade to commons-collections 3.2.2.
      </action>
      <action issue="RAT-210" type="fix" dev="pottlinger">
        Adapt layout of Creadur project pages to use the new ASF logo. Change links to SSL.
      </action>
      <action issue="RAT-163" type="fix" dev="jochen">
        Removing the Gradle Plugin from the Rat Core project, so that building
        with Java 5 works again.
      </action>
      <action issue="RAT-158" type="fix" due-to="Hervé Boutemy" dev="pottlinger">
        Fix SAX-Parser warning by explicitly excluding xerces in Doxia 1.2.
      </action>
      <action issue="RAT-173" type="fix" due-to="Chris Burroughs" dev="pottlinger">
        Allow complete skip of RAT plugin with rat.skip property.
      </action>
      <action issue="RAT-174" type="fix" due-to="Chris Burroughs" dev="pottlinger">
        CDDL1License still very slow, replace Pattern matching with simple String comparison.
      </action>
      <action issue="RAT-175" type="fix" dev="sebb">
        SourceCodeManagementSystems.hasIgnoreFile() should return boolean.
      </action>
      <action issue="RAT-177" type="fix" dev="pottlinger">
        Final arrays should be private.
      </action>
      <action issue="RAT-188" type="fix" due-to="Mark Thomas" dev="pottlinger">
        Fix problems with AnimalSniffer-plugin when running in GUMP with Java 8.
        Workaround for https://jira.codehaus.org/browse/MANIMALSNIFFER-45
      </action>
      <action issue="RAT-160" type="fix" due-to="Christopher Tubbs" dev="pottlinger">
        Ignore build.log created by maven-invoker-plugin.
      </action>
      <action issue="RAT-179" type="fix" dev="pottlinger">
        Maven plugin and Ant task do not support adding extra approved licenses.
      </action>
      <action issue="RAT-180" type="fix" dev="pottlinger">
        Generify and beautify texts in RAT report.
      </action>
      <action issue="RAT-196" type="add" due-to="Karl Heinz Marbais" dev="pottlinger">
        Minor refactoring in pom.xml.
      </action>
      <action issue="RAT-194" type="fix" due-to="Hervé Boutemy" dev="pottlinger">
        Upgrade to Doxia 1.6 if called directly, does not affect problems reported in RAT-158. Minor improvements.
      </action>
      <action issue="RAT-61" type="add" due-to="Jukka Zitting" dev="dennisl">
        List files with unapproved licenses in Maven output.
      </action>
      <action issue="RAT-170" type="add" due-to="Philipp Ottlinger" dev="dennisl">
        RAT should use itself during build and site generation.
      </action>
      <action issue="RAT-181" type="add" dev="sebb">
        BinaryGuesser should treat *.truststore as binary.
      </action>
      <action issue="RAT-184" type="add" due-to="Karl Heinz Marbaise" dev="pottlinger">
        Add DEPENDENCIES to the list of ignored files in NoteGuesser.
      </action>
      <action issue="RAT-185" type="add" due-to="Karl Heinz Marbaise" dev="dennisl">
        .repository folder should be ignored.
      </action>
      <action issue="RAT-186" type="add" dev="dennisl">
        BinaryGuesser should recognize PSD files as images.
      </action>
      <action issue="RAT-187" type="add" due-to="Karl Heinz Marbaise" dev="dennisl">
        Add 'SAR', 'HAR', 'WSR' as archives which should be ignored.
      </action>
      <action issue="RAT-197" type="add" due-to="Karl Heinz Marbaise" dev="pottlinger">
        Improve exclusion defaults when working with Maven 3.3.1 (exclude .mvn).
      </action>
      <action issue="RAT-198" type="fix" due-to="Karl Heinz Marbaise" dev="pottlinger">
        Upgrade plexus-utils to 3.0.20.
      </action>
      <action issue="RAT-172" type="fix" dev="pottlinger">
        Exclude technical directories of source code management systems and their ignore files from RAT scans.
      </action>
      <action issue="RAT-200" type="fix" dev="pottlinger">
        Upgrade ASF parent POM to 17.
      </action>
      <action issue="RAT-201" type="add" dev="pottlinger">
        BinaryGuesser should treat *.swf as binary.
        Furthermore BinaryGuesser falls back to UTF-8 encoding in case the encoding given via system property
        (-Dfile.encoding) was not found.
      </action>
      <action issue="RAT-202" type="add" dev="pottlinger">
         Report layout differs between successful RAT checks and existence of unapproved files.
      </action>
      <action issue="RAT-202" type="add" dev="pottlinger">
         Report layout differs between successful RAT checks and existence of unapproved files.
      </action>
      <action issue="RAT-203" type="add" dev="pottlinger">
         Using 'license' in README, source code, javadoc, comments and site instead of 'licence';
         improve terminology to not confuse RAT consumers.
      </action>
      <action issue="RAT-204" type="add" dev="pottlinger">
        Unify resource handling in code and tests, make sure the resources are properly closed. Apply minor refactorings.
      </action>
    </release>
    <release version="0.11" date="2014-08-31" description=
"* Rat stays at compiler level 1.5 to be more compliant with other Maven plugins,
  fixed build/CI environment to reflect and ensure that.

  * Fixed Javadoc warnings during build, upgraded Maven Plugin Plugin to avoid
  warnings in generated code (https://jira.codehaus.org/browse/MPLUGIN-237)
">
    <action issue="RAT-135" type="fix">addLicenseHeaders is missing a space on license header.</action>
    <action issue="RAT-144" type="fix">AbstractRatMojo String constant arrays should be private</action>
    <action issue="RAT-148" type="fix" due-to="Chris A Mattmann">LicenseAddingReport#report has useless call to metaData.getData</action>
    <action issue="RAT-151" type="fix">Detect more archive file formats</action>
    <action issue="RAT-152" type="fix">Recognize the format for .bsh, .fml and .jsp file types</action>
    <action issue="RAT-153" type="fix">Do not add extra empty lines when appending headers for the Apache License</action>
    <action issue="RAT-154" type="fix">Indentation of the license header should be decided per family</action>
    <action issue="RAT-155" type="fix">Do not add empty first and last lines in the license header for certain families</action>
    <action issue="RAT-156" type="fix">Add some symmetry when applying license headers to files with file type specific headers</action>
    <action issue="RAT-159" type="fix">Detect OpenOffice documents as being archives</action>
    <action issue="RAT-129" type="add">Add support for CDDL 1.0</action>
    <action issue="RAT-162" type="add" due-to="Andrew Gaul">CDDL1License.matches slow with large inputs</action>
    <action issue="RAT-164" type="add">Allow skipping execution entirely</action>
    <action issue="RAT-165" type="add">Use a maven defaultGoal for RAT's base pom.xml</action>
    </release>
    <release version="0.10" date="2013-09-05" description=
"The 0.10 version includes several bug fixes,
most notably a fix for 0.9 performance issues.
 * Simpler binary archive
 * Updated dependencies and plugins
 * Fixed up generics and annotations">
      <action issue="RAT-137" type="fix">Website shows incorrect Maven goals in some pages</action>
      <action issue="RAT-128" type="fix">Use the proper name for the Apache License</action>
      <action issue="RAT-138" type="fix">RAT runs very slowly on some input</action>
      <action issue="RAT-140" type="fix">OASISLicense allows invalid Copyright line</action>
      <action issue="RAT-139" type="fix">FullTextMatchingLicense.prune uses inefficient deleteAtChar</action>
      <action issue="RAT-145" type="fix">Maven plugin should not run in the "verify" phase, but in the "validate" phase</action>
      <action issue="RAT-129" type="add">Add support for CDDL 1.0 </action>
    </release>
    <release version="0.9"  date="2013-05-02" description=
" * Improved documentation
  * Rat now requires Java5 at runtime
  * The Antlib contains a new matcher type that allows matching on the
   full text of the license rather than a single line.
 * Support automatic addition of license headers to svg files.">
      <action issue="RAT-3" type="fix">Incorrect alignment of file contents</action>
      <action issue="RAT-102" type="fix">typo in pom.xml / field description</action>
      <action issue="RAT-109" type="fix">Return value of mkdirs() is not checked and no error handling occurs</action>
      <action issue="RAT-116" type="fix">Docs don't say what the default excludes are</action>
      <action issue="RAT-120" type="fix">fix some maven warnings and upgrade some dependencies.</action>
      <action issue="RAT-121" type="fix">use maven java5 annotations for maven plugins</action>
      <action issue="RAT-122" type="fix">Maven Plugin: field to ignore errors and continue the build</action>
      <action issue="RAT-124" type="fix">Rat plugin should exclude the configuration directory used by IDEA</action>
      <action issue="RAT-126" type="fix">Default excludes do not ignore .git/ repository</action>
      <action issue="RAT-13" type="update">[GOOGLE-14] GNU License support</action>
      <action issue="RAT-49" type="update">Recognise MIT LIcense</action>
      <action issue="RAT-104" type="update">
          Using jUnit4 annotation based tests instead of junit3 - migration from junit 3.8.2 to current junit 4.10
      </action>
      <action issue="RAT-106" type="fix">Minor Javadoc errors fixed in 3 files</action>
      <action issue="RAT-108" type="update">Add native support for thrift generated code to be ignored</action>
      <action issue="RAT-111" type="update">RAT does not ignore javah generated files</action>
      <action issue="RAT-125" type="update">Support applied AL20 license headers, including checking for required copyright header line</action>
      <action issue="RAT-78" type="add">Support doxia 1.1.2</action>
      <action issue="RAT-59" type="update">Upgrade To Java 1.5</action>
      <action issue="RAT-119" type="update">Upgrade Maven prerequisite to 2.2.1</action>
    </release>
    <release version="0.8-incubating"  date="2011-11-15" description=
"Version 0.8 improves the command line interface, supports more file
types when adding license headers and makes it easier to detect custom
licenses.
Some website fixes
The Antlib and Maven plugins now provide simpler ways to detect licenses not directly supported by Rat.">
      <action issue="RAT-86" type="bug">CLI doesn't allow adding of licenses unless a custom stylesheet has been specified</action>
      <action issue="RAT-87" type="bug">Tests could leave temporary files around.></action>
      <action issue="RAT-92" type="bug">When adding licenses Rat used \n instead of the platform dependent line--end character(s)</action>
      <action issue="RAT-94" type="bug">Streams were not always closed immediately when adding licenses.</action>
      <action issue="RAT-79" type="update">Support automatic addition of license headers to Velocity templates</action>
      <action issue="RAT-83" type="update">Support automatic addition of license headers to Scala source files</action>
      <action issue="RAT-84" type="update">Support automatic addition of license headers to Ruby source files</action>
      <action issue="RAT-89" type="update">Support automatic addition of license headers to Perl, TCL, C++, C# and PHP source files</action>
      <action issue="RAT-91" type="update">Support automatic addition of license headers to Groovy source files</action>
      <action issue="RAT-85" type="update">Allow --addLicense as an alias for --addLicence for people used to the US spelling.</action>
      <action issue="RAT-34" type="update">--addLicense will add the license to the top of Java files without a package line or XML files without an XML declaration now - it used to not add anything.</action>
      <action issue="RAT-67" type="update">The XML and standard plain text reports now contain a timestamp with the time the report has been generated.</action>
      <action issue="RAT-95" type="update"> When adding licenses Rat will now remove any BOM from the file.</action>
      <action issue="RAT-93" type="update">--addLicense now supports more .NET specific files like MS Visual Studio project and solution files</action>
      <action issue="RAT-99" type="update">The command line interface has a new option that specifies a file containing regular expressions for files to exclude</action>
    </release>
    <release version="0.7-incubating"  date="2013-05-02" description=
"The following changes have been made in Apache RAT 0.7:

- Add support for Python scripts, C source files, Unix shell scripts (.sh) and Windows batch files (.bat) (RAT-68)
- Allow Ant task to output report as XML. (RAT-73)
- Allow users to specify a custom XSLT stylesheet for reports (RAT-74, and RAT-75)
- Some website fixes
- Optionally auto-add headers to source files. (RAT-76) ">
      <action issue="RAT-62" type="fix">Some of Rat's own files missing License Headers</action>
      <action issue="RAT-63" type="fix">ant-task-examples.xml has an wrong uri in the -typedef ant target</action>
      <action issue="RAT-70" type="fix">Missing closing html tag in generated report by</action>
      <action issue="RAT-17" type="update">Support the use of archives as input</action>
      <action issue="RAT-30" type="update">Support automatic addition of license headers</action>
      <action issue="RAT-76" type="update">Support automatic addition of license headers</action>
      <action issue="RAT-52" type="update">Merge In Rat Output Semantics</action>
      <action issue="RAT-56" type="update">Commons IO Wildcard Excludes</action>
      <action issue="RAT-65" type="update">Rat Pom cleanup</action>
      <action issue="RAT-68" type="update">Add support for Python, C, &amp; script files (.bat &amp; .sh)</action>
      <action issue="RAT-72" type="update">Keep version in plugins sample doc up to date</action>
      <action issue="RAT-73" type="update">Support for XML output in Ant task and Maven Plugin</action>
      <action issue="RAT-73" type="update">Support for XML output in Ant task and Maven Plugin</action>
      <action issue="RAT-74" type="update">Support for custom XSLT stylesheets</action>
      <action issue="RAT-75" type="update">Support for custom XSLT stylesheets</action>
    </release>
    <release version="0.6-incubating" date="2009-04-10" description=
"This is the first version using the org.apache package
structure and related names. RAT users are strongly encouraged to
migrate, as the old Google version will no longer be maintained.
 * Support for TMF header
 * Comprehend PEM, CRL file endings
 * Added reporting capability to recursive rat script
 * Moved to the Incubator@Apache
">
      <action issue="RAT-37" type="fix" dev="jochen"
          due-to="Jukka Zitting" due-to-email="jukka@apache.org">
        List all resources with unapproved licenses at the beginning of the report.
      </action>
      <action issue="RAT-36" type="fix" dev="jochen"
          due-to="Jukka Zitting" due-to-email="jukka@apache.org">
        Report header incorrectly refers to an "L" license marker
      </action>
      <action issue="RAT-33" type="fix" dev="jochen"
          due-to="Gavin" due-to-email="gavin@16degrees.com.au">
        Mailing list subscribe points to unsubscribe
      </action>
      <action issue="RAT-3" type="fix">Incorrect alignment of file contents</action>
      <action issue="RAT-11" type="fix">Incorrect number of unnapproved licences reported</action>
      <action issue="RAT-12" type="fix">Incorrect SCM info in maven plugin pom</action>
      <action issue="RAT-29" type="fix">NPE on &quot;mvn install&quot; in rat-anttasks</action>
      <action issue="RAT-34" type="fix">No license header added for java files that do not contain project line</action>
      <action issue="RAT-35" type="fix">Incorrect number of unapproved licenses reported by rat:check</action>
      <action issue="RAT-8" type="update">add JavaCC to GeneratedLicenseNotRequired</action>
      <action issue="RAT-9" type="update">A more informative website</action>
      <action issue="RAT-10" type="update">A few Javadoc comments</action>
      <action issue="RAT-23" type="update">More details in text summary</action>
      <action issue="RAT-24" type="update">Include checksums on web page</action>
      <action issue="RAT-26" type="update">Improve web summary</action>
      <action issue="RAT-27" type="update">Index page</action>
      <action issue="RAT-6" type="add">RAT Source Import</action>
      <action issue="RAT-28" type="add">Repackage maven plugin</action>
      <action issue="RAT-1" type="add">maven-rat-plugin and ant-rat tasks</action>
    </release>
    <release version="0.5.1" description=
"* Fixed file closing bug
 * Fixed XML bad character bug"/>
    <release version="0.5" description=
" * Added header matcher for DoJo.
 * Refactoring existing codebase to separate concerns and use
   resource pipeline.
 * New header matching library."/>
    <release version="0.4.1" description=
"Rat 0.4.1 is the first release with distributions. The release was cut
for this purpose.
 * Created POM for use with Rat library.
 * Ant task switched to use Xml based report."/>
    <release version="0.4" description=
" * Ant tasks added. These allow Rat reports to be run against a wide variety
   of resources from within Ant.
 * Legacy report is now deprecated. It will be removed before the next release.
 * Created stylesheet for xml reports which produce output similar to the legacy
   plain text report. Application now uses the xml report with that stylesheet.
 * Revised xml output format
 * Improve support for binary recognition by adding code that tastes files"/>
    <release version="0.3" description=
" * This is the last release with the original hacked together plain test report.
   The new XML reporting code is present but is not yet the default.
 * Rat 0.3 is the first release with release notes. All previous releases are
   now consigned to Ancient History. No record of them will be found here."/>
  </body>
</document>
