1.9.11
------

Updated 2.2 series to 2.2.2.

Drop support for Groovy 1.8.

Add support for Groovy 2.3.

Fix a problem with the Windows batch launch script. Thanks to Hubbitus.


1.9.10
------

Updated to Groovy 1.8.9, 2.0.8, 2.1.9.

This release triggered by the arrival of Groovy 2.2.0.


1.9.9
-----

Updated to Groovy 1.8.8, 2.0.6 and 2.1.0.

Various changes to cause less compilation warnings.

This release triggered by the release of Groovy 2.1.0


1.9.8
-----

Updated to Groovy 1.8.6 and 2.0.0.

Abandoned support for Groovy 1.7.x series. Groovy 1.8 series brought a parameterized Closure class and
supporting the two versions of Closure in the same code base is too much hassle.

This release was tirggered by the release of Groovy 2.0.0.


1.9.7
-----

No substantive changes to Gant, per se.  Groovy 1.7.10, 1.8.4 and 2.0.0-beta-1 are the ones built against.

Various minor changes to the build framework and project files have been made.  Various launch scripts have
been re-synchronized with those of Groovy.  Various changes made to allow for using Java 7 as well as Java
6, but none in Gant itself only in the tests.

This release actually triggered by the release of Groovy 2.0.0-beta-1 since it is a revolutionary change to
the numbering of Groovy -- 1.9.x series has been dropped and replaced by the 2.0.x series, i.e. the changes
have been deemed a major change.  Which is probably right.


1.9.6
-----

No substantive changes to Gant, this release is made post release of Groovy 1.8.1 and 1.9.0-beta-1
principally to get a version of Gant compiled against he Groovy 1.9 series into the Maven repository.

GroovyDoc, JavaDoc, and source artefacts are now built and published.


1.9.5
-----

GroovyShell.parse(InputStream, String) has been removed in Groovy 1.9.x.  This introduces and
incompatibility with the 1.6.x API.  Drop Gant support for Groovy 1.6.9.

Switch to using Groovy 1.8.0 (instead of 1.7.10) as the bundled version of Groovy for the stand-alone Gant
distribution.


1.9.4
-----

Add Groovy 1.8 to the Groovy series supported by Gant.

Groovy 1.6.9 is now used for the 1.6 series build of Gant and 1.7.8 for the 1.7 series build.

Deb files are now built as part of the release process.

Remove the Maven Ant task jar from the repository and the distribution.


1.9.3
-----

Updated the Groovy 1.7.x series to be 1.7.3.

Minor fixes to the exit code and other processing for the Windows launch scripts to keep in line with Groovy
ones.

Corrected Windows batch file processing to avoid assumptions made in startGroovy.bat.

This release is really being made because it transpires that the 1.9.2 release for the Groovy 1.7 series was
compiled against Groovy 1.7.1 which had a breaking API change that was reverted for Groovy 1.7.2 and thus
1.7.3.  The consequence is that the version 1.9.2 gant_groovy1.7 artefact is incompatible with Groovy 1.7.2
and 1.7.3.


1.9.2
------

Various minor bug fixes and refactorings, including switching to Groovy 1.7.1 as the main version of Groovy,
JUnit 4.8.1 as the unit test framework, and Ant 1.8.0 as the principal version of Ant used.

Maven and Gant builds removed in favour of focusing solely on Gradle as the build for the Gant project.


1.9.1
-----

The change to the Gradle build tool for release of Gant 1.9.0 led to a an error in the stream processing of
the launch scripts which led to a failure to start Gant.  This release is to fix that problem.


1.9.0
-----

Added the ability to skip the tests when using the Maven target set.  Use -DskipTest=true on the command
line to stop the tests being compiled and run, otherwise they will be.

Change the way in which the final message is output when Gant is executed from the command line from being
hardwired to being the execution of a hook, terminateHook.  cf. GANT-104.

Altered the Gant Ant task so as to provide an inheritAll attribute.  cf. GANT-110.

Switched GantException from extending RuntimeException to extending org.apache.tools.ant.BuildException so
as to allow better consistency with use of Gant from Ant.  cf. GANT-111.

Switch from using Ant as a boostrap and Gant for other processing to using Gradle for all build issues
(except distribution release as there is still a problem there).

Updated to Groovy 1.7.0 for Groovy 1.7.x and Groovy 1.6.7 for Groovy 1.6.x.

Switch from using Ant as a boostrap and then Gant to manage the project to using Gradle for all build and
install activity.


1.8.1
-----

Upgrade to Ivy 2.1.0.

Upgrade to Groovy 1.7-beta-2


1.8.0
-----

Upgrade to using JUnit 4.7, in line with Groovy 1.7.x.

Added the ability for each target to have a per-target prehook and posthook, and for there to be a global
prehook and posthook -- which are the same for all targets.  The hooks can either be a closure or a list of
closures.  Global prehooks are executed before per-target prehooks, which are executed before the build
listeners are informed and the target body is executed.  Global posthooks are executed after the per-target
posthooks which are executed after the target body and the buildlisteners.  The logging of entry and exit to
each target is implemented as the default per-target prehook/posthook. cf.  GANT-90, GANT-99 and GANT-100.

Remove (finally) the name Ant from the binding.  The symbol has been deprecated for ages.

Fixed GANT-91 and GANT-93.

Added nestedJavacCompilerArgs property to the Maven target set to allow for nested compilerarg elements to
the nested javac element of a groovyc element.

Upgraded to using Groovy 1.6.5.


1.7.0
-----

Added the binding variable initiatingTarget which is set by the Gant infrastructure just prior to processing
each target, it allows the Gant script to know what the initiating target is.

Added properties gant.version (the version of Gant currently executing) and gant.file (the initial Gant file
being processed) to the binding to allow the script to process these data.

Upgrade to using Groovy 1.5.8 instead of 1.5.7 as the Groovy 1.5.x version.

Upgrade to using Groovy 1.6.4 instead of 1.6.0 as the Groovy 1.6.x version.

Amend the way symbolic links are processed in the launch scripts on Mac OS X to correct various faults.

Added features to solve GANT-44.  The binding variable 'targets' is now an entry in the binding and contains
the list of as yet uncompleted targets.  This is the target list from the command line with all the already
processed ones removed.  The list contents are mutable within the Gant script but the variable itself is
read-only and so cannot be changed to refer to another list.

Various names present in the binding have been made read only within Gant scripts: target, message, ant,
includeTargets, includeTool, targetDescriptions, setDefaultTarget, initiatingTarget, targets.  A build fails
if an assignment is attempted on any of them.

Made 'finalize' a special target name.  'finalize' is always called if present whether a build finishes
normally or duie to an exception.  cf.  GANT-81.

setDefaultTarget used to generate a target called default which was problematic if a script defined a target
of that name.  The default target processing has been changed to avoid this.

Error messages now appear on standard error, previously they appeared on standard out along with other forms
of output.  cf. GANT-77.

Gant now provides output about the targets being processed so is a little more "Ant-like" -- but note there
are significant differences, Gant outputs information about starting and completing a target.  cf. GANT-77, GANT-80.

Gant jar is now OSGi compliant.  cf. GANT-83.

Should now never need the ant. when calling Ant tasks. cf. GANT-10.


1.6.1 ( r10179 )
----------------

Groovy 1.6.0 is released, declare a Gant bug-fix release so as to avoid any confusion regarding versions of
Gant in the Maven repository and elsewhere.


1.6.0 ( r10161 )
---------------

A first cut at adding BuildListeners added by Graeme Rocher.  cf. GANT-70.

Fix the Posix shell scripts to try and deal with the weirdness of the Mac OS X readlink compared to the one
on Ubuntu, MSYS, Cygwin.  Solaris doesn't have readlink by default, the Sunfreeware version is the same as
the one on Ubuntu, MSYS, Cygwin.

Split the two cases where -2 is the return code, introduce -4 for one of the cases.

Various tinkerings associated with GANT-50, GANT-62, GANT-71.

Upgraded to use Groovy 1.6-RC-2.

Upgraded to use Ivy 2.0.0.


1.5.1 ( r10110 )
----------------

Patch up the startGroovy script to deal with MSYS issues.

Amend the org.codehaus.gant.ant.tests.Gant_Test to ensure things work on Windows as well as Ubuntu, Mac OS X
and Solaris.


1.5.0 ( r10067 )
----------------

Amend property lookup so that Ant properties appear as entries in the Gant binding, i.e. Ant properties are
directly accessible as variables -- no need any more for ant.project.properties.skipTests, can just use
skipTests.  Where there is a name conflict Groovy variables take precedence over Ant properties.

Added nested <definition> tags to the Gant Ant task so as to allow -D... parameters to be specified.

Added nested <gantTarget> tags to the Gant Ant task so as to allow multiple targets to be run.

Correct the Gant Ant task file lookup to use basedir rather than the start directory as the base from which
to search for the file.

Provide a new constructor to allow Gant to be used in a Groovy Ant Task script.  cf. GANT-50.

Correct some of the cygpath option lists. (Thanks to Paulo Jerônimo for spotting and reporting the problem.)

Extend processing of symblic links in the gant Posix scripts. (Thanks to Nicolas Lalevée for submitting
GANT-57.)

Update to expect to use Ivy 2.0.0-rc2 at run time.

Fix GANT-30 by removing .groovy and .gant extensions from file names before constructing class names.

GStrings no longer cause problem in depends call -- fixed GANT-55.  GANT-61 is a duplicate of GANT-55.

Serious refactoring of the constructor structure of Gant.  Thanks to Peter Ledbrook.  cf. GANT-48.  NB  This
is a significant breaking change for any code that creates Gant objects.  The script is no longer loaded as
part of construction but has been separated out using the loadScript method.  This allows for introduction
of the loadScriptClass method.

Alter the start up jar load to include only jars with names starting "ant" from the $ANT_HOME/lib directory.

Fix the Windows batch scripts.  cf. GANT-66.  (Thanks to Daniel Skiles and Bob Swift.)

Add the ability to have arbitrary entries in the map that is the parameter to the target.  So as well as:
    target ( flobadob : 'Description of target flobadob' ) { . . . }
can now have:
    target ( name : 'flobadob' , description : 'Description of target flobadob' ) { . . . }
the map can contain any entry but must have a jey called name.  this means that the name of the
target can be accessed as it.name and the description as it.description in the closure of the target.
cf. GANT-56.

Introduce Peter Ledbrook's changes to the naming of the Maven repository artefact and the consequent changes
to the build system.  The compilation of Gant depends on the version of Groovy used and this has to be
reflected in the artefacts uploaded to the Maven repository.  It is not possible to use classifiers since
this requires using the same POM and the POM has to be different for each build.

Partly addressed GANT-63 about losing information about exceptions being thrown.

Part fix for GANT-51.


1.4.0 ( r9604 )
---------------

Remove the assumption that all instances of a given class have the same metaclass.

Fixed the method search so that the GantBuilder object referred to by ant is checked for all closures
declared in a target. However, this raises issues, cf. GANT-49.

Correct Execute.shell method so it works on Windows without Cygwin or MSYS. cf. GANT-38.

Correct all the tools and target sets so that a GantBinding rather than a Binding is passed.  NB This is a
breaking API change for anyone who has written their own tools or target sets.

Add groovyc taskdef to the GantBuilder instance so the user doesn't have to.  GANT-19 relates.

Tidied up the tool and target set classes to ensure that both "<<" and "** *" operators work correctly.

Stop the binding entry target from being redefined.

Remove the task entry in the binding.  It was deprecated and advertised as being removed in v1.3.

Added a new Gant constructor to allow precompiled scripts to be used.  Provided by Peter Ledbrook,
cf. GANT-47.

Fixes:  GANT-19, GANT-32, GANT-38, GANT-42, GANT-45, GANT-46.

Workaround provided for GANT-49, but a final fix is still needed.

1.3.0 ( r9298, tagged as 9302 )
-------------------------------

Change the way Groovy installs so that it doesn't install into the Groovy installation, but into its own
hierarchy.  There are two distributions:

            1.  Requires a separate Groovy installation.  Currently there are two version:
                a.  Compiled against Groovy 1.5.6
                b.  Compiled against Groovy 1.6-beta-1

            2.  Self-contained, includes all dependent jars.

Various tests amended to work correctly on Windows. Tests previously only checked on Ubuntu, Mac OS X and Solaris.

Created a Gant log.

Created Windows batch files that work.  Posix shell scripts only worked previously.


1.2.0 ( r9173 )
---------------

Introduce the GantBinding class to ensure various things that are needed for Gant to work and to allow more
efficient cloning for multi-threading builds.

Remove the inserting of the class name for target set classes into the binding.

Make the symbols added to the binding by the tools lowercase rather than upper case.  cf. GANT-29.

The Maven target set used to provide access to properties via the symbol Maven, this is changed to
maven.  This change is to make things consistent with the above change of case of tool symbols. All uses of
Maven as a reference from the binding must be replaced by maven.

Add in checks for duplicate symbols in the binding.

Change --cachedir option to short form -C so that -d can be used for --debug.

Updated Maven Ant Tasks to 2.0.9.

Added the ability to specify remote repositories in the Maven Target set.

Move to Java 1.5 for the Gant source: introduce generics and remove casts wherever sensible.

Ensure numeric return values from targets are promulgated to the exit code for the Gant target processing.

Swap to using negative numbers for error codes generated by Gant itself, leaving positive return codes for
Gant scripts to use.

Rearrange the tests to only depend on the presence of GROOVY_HOME when it is appropriate.  GROOVY_HOME is
not needed for execution only for installation of Gant.


1.1.2 ( r9087 )
---------------

Updated to using Ivy 2.0.0-beta2.

Corrected the bug that the Ivy tool was not operating in the correct namespace.  This removes the spurious
message: "Trying to override old definition of task buildnumber" that used to happen.

Refactored the IncludeTarget and IncludeTool classes to move replicated code into the common superclass
AbstractTool.

Corrected the way that jars are included on the classpath from ~/.gant/lib, ~/.ant/lib and $ANT_HOME/lib.

Updated TestNG from 5.7 to 5.8 in Maven target set. Amended the properties set so that the TestNG version
number and and classifier can be set by the user instead of being only hardwired.  The defaults are still
hardwired in an ugly way though.

Extended the Ivy tool to allow the path to the Ivy jar to be specified using the ** * notation.

Ensured the AntFile and Include tests work on Windows as well as Ubuntu, Solaris, and Mac OS X.

Modified the verbosity level stuff so as to set the verbosity understood by the Ant tasks that get called.


1.1.1 ( r9027 )
---------------

Added the Ivy and Maven Ant Tasks jars to the binary distribution.

Amend the Maven target set to add explicit specification of the source and test directories.  This applies
the Groovy joint compiler to everything in that directory, i.e. the Maven 2 split of language specific
directories is not applied.

Amended the Execute tool adding multi-threading of the process output streams to avoid blocking due to
overful buffers.  cf. GANT-22.  Altered return type of methods so as to return the return code of the
executed process. cf. GANT-23.

Add a new tool AntFile for reading an Ant XML file and presenting all the targets as targets in a Gant file.

Added a -L|--lib <directory-path> options in the same style as Ant's at the request of Adam DesJardin.
cf. GANT-24.

Added $HOME/.gant/lib as a repository of jar files as well as $HOME/.ant/lib.

Amended the depends processing to deal with lists of mixed Strings and Closures.


1.1.0 ( r8964 )
---------------

Added metadata to the Maven target set.

Updated the Ivy example a bit.  Switched to Ivy 2.0.0-beta-1.

Added a Gant Ant Task.  (For supporting continuous integration systems that insist on using Ant.)
Unfortunately, there is a problem with loading the Groovyc task in an Gant script executed from an Ant
script -- see GANT-19.   The Gant Ant task is written in Java which leads to the build requiring the use of
the joint Groovy compiler.  This means it is not possible to build Gant using Groovy 1.0.

Added creating Cobertura reports via the coberturaTest target in the Gantfile.

Amended some of the error handling, especially target definition.

Added constructors to allow the Gant script to be a parameter.  This allows programs (including the tests)
not to have to use a command line approach to starting Gant.  Many of the tests refactored.

Added extra options in the LaTeX tool execution to avoid any interactive mode of LaTeX.


1.0.2 ( r8867 )
---------------

Fixed bug in parameter types of message Closure in gant.Gant.

Declared this release and eradicated 1.0.1 to avoid any hassles with the above bug.


1.0.1 ( r8861 )
---------------

Amended and extended the Maven target set so that it actually works well enough to be useful.

Change the return codes so as to provide easier discrimination of error cases.

Removed --lib option and replaced with --classpath | -P option.  Takes a path not a single jar.

Added setDefaultTarget function to make setting up the default target easier.  Also the help output for the
target default assumes that the description string is just the name of the default target.

Rearranged the filestore to work better for command line working, Eclipse, and the Maven target set.

Gant now compiles in Eclipse 3.2.2 with Groovy plugin 1.5.0.200712080221.


1.0.0 ( r8816 )
---------------

Changed the lookup sequence in GantMetaClass adding lookup in the Ant object for a method call as a final
attempt to resolve a name.  This makes Ant. completely optional as requested in GANT-10.

Rearranged the constructors so as to allow for a custom class loader when calling Gant programmatically.

Reverted to -D processing as in 0.3.1 which actually works with Commons CLI 1.0 even though it is a bug.
0.3.2 and 0.3.3 were broken as -D processing did not work at all.

Added the ** * mechanism for creating target set and tool objects using constructor parameters.

Stopped Gant from issuing FileNotFoundException.

Released to coincide with release of Groovy 1.5.0.


0.3.3 ( r8490 )
---------------

Created a new option (-d,--cachedir) to specify a cache directory for the caching system.  This is used by
Grails.  Gant release rushed out for the Grails 1.0 release.

Formally announced deprecation of task, should now use target.


0.3.2 (r8191)
-------------

Fixed problem with -V option.

Started a Maven 2 build capability -- this is work in progress and not complete.

Restructured source to fit better with the Maven 2 directory structure.

Corrected various problems with return values.

Changed the location of the repository to http://svn.codehaus.org/groovy/gant


0.3.1 (r6962)
-------------

Added returning a sensible return code -- 0 for success and 1 for failure.

Added extending of the classpath:
      --lib <path> for individual jars.
      Searching ~/.ant/lib for user collections of jar files.
      Searching ANT_HOME/lib for jar files if ANT_HOME is defined.


0.3.0 (r6320)
-------------

Works with both Groovy 1.0 release and the Groovy 1.1-beta-1 release.

Changed from using `task' to using `target' as the string introducing a target.

Added a Maven project processing tool.

Added a mechanism for accessing the documentation string of a target.

Improved the error reporting.


0.2.4 (r5374)
-------------

Use System.properties.'file.separator' instead of / so things work on Windows.

Added the ability to have multiple -D options so as to be able to define any number of variables/properties
on the command line.

Added specialized Grails build infrastructure.

Implemented local caching of .class files to improve performance when executing scripts. This is an optional
feature (disabled by default) and is enabled using the -c option of gant.

Added the a LaTeX processing tool.


0.2.3 (r4761)
-------------

Updated to use and work with Groovy 1.0 release.


0.2.2 (r4329)
-------------

Licence changed from LGPL to ASL 2.0.

Updated to use and work with Groovy 1.0 RC-1.

Added gant.tool.Execute, works on Linux, Solaris and Mac OS X, not tested on Windows.

Tidied up code and removed redundant bits.

Package structure of the code changed.

Enforced 1.4 class files.

(There appears never to have been a version 0.2.1.)


0.2.0 (r4160)
------------

First release of Gant.


The Epoch (r3965)
-----------------

No release of 0.1.x of Gant ever made.
