1.5.9 (Pending)
* Fixed:  Prior to `1.5.8`, generating IntelliJ IDEA modules could generate a failure if the project included
          a dependency defined by a `JarTask` that specified a non-nil classifier. This failure scenario is now
          much more frequent given the changes to support external annotations that are packaged as jars. This
          crash is now avoided by changing guard from `artifact.respond_to?(:to_spec_hash)` to
          `artifact.is_a?(Buildr::Artifact)`.
* Fixed:  The `add_glassfish_remote_configuration` method and the `add_glassfish_configuration` method used the
          incorrect types for the default values for the `exploded` optional property. This is unlikely to have
          caused problems during normal usage but could lead to unexpected behaviour when the innards of these
          methods were monkey patched and expected the "correct" type for these properties.
* Fixed:  If all of the TestNG tests failed during the test setup then these tests would not be written to the
          list of failed tests which would mean that buildr would not mark the containing projects test task as
          failing when it runs. This has been patched to report any errors and fail the test task as expected.
* Added:  Add support for the GWT version `2.8.2-v20191108` released with the nonstandard group id.
* Added:  Add the `buildr/spotbugs` addon. Spotbugs is the successor of the Findbugs project and the buildr addon
          is based on the original findbugs addon.
* Added:  Add support for configuring non-template TestNG run configurations for IntelliJ IDEA projects. The
          configurations are created via the `ipr.add_testng_configuration(...)` configuration method.

1.5.8 (2019-07-14)
* Fixed:  Changed references to `https://repo1.maven.org/maven2` to use https where possible.
* Change: Use the `zapwhite` gem to manage file whitespace within repository.
* Fixed:  Replace references to long removed `http://www.ibiblio.org/maven2/` repository with
          `https://repo1.maven.org/maven2`.
* Fixed:  Ensure pom files used in tests use https when referring to maven repositories.
* Added:  Add support for downloading external annotations and attaching them to IntelliJ IDEA module dependencies.
* Added:  Detect external annotations in the local project and add them to the generated IntelliJ IDEA
          module when generating. The default location is `src/main/annotations` but other locations
          can be specified by modifying the `project.iml.annotation_paths` property.
* Fixed:  Explicitly specify the `:sourcepath` parameter for javadoc tool. This enables additional parameters
          such as `-packagenames` and `-subpackages` to be passed to the underling tool.
* Fixed:  Stop generating poms with the parent POM `org.sonatype.oss:oss-parent:8`. The last update was a long time
          ago (i.e. 2012) and it is no longer maintained. It was also deprecated several years ago and is not
          guaranteed to work in modern Maven deployments.

1.5.7 (2019-02-16)
* Fixed:  The fix that allowed special characters in usernames and passwords was only partially applied
          in the `1.5.6` release. The complete fix that correctly decoded usernames and passwords before
          passing them to HTTP library is now been applied.
* Change: GWT Addon: Added support for `:skip_merge_gwt_dependencies` parameter that makes it possible to
          avoid adding GWT dependencies to the project directly and thus the associated POM. This will be
          required to support GWT3.x and GWT2.x simultaneously as well as making it easier to manage
          dependencies in the POMs.
* Change: Javadoc: If the user does not supply an explicit `:sourcepath` to the doc/javadoc tool then
          default the value to `project.compile.sources`. This will stop javadoc from scanning the classpath
          for `*.java` files which can cause issues with projects that include `sources` classifier artifacts
          on the classpath. This is particularly relevant for GWT based projects that include artifacts with
          source embedded in the artifacts. This change also made it possible to remove an ugly hack in the
          GWT addon that removed the gwt artifacts from the javadoc path.
* Change: Drop deprecated Gem::Specification#has_rdoc= (no replacement) method. Submitted by Olle Jonsson.
* Change: Use https protocol to access Gem metadata. Submitted by Olle Jonsson.
* Change: Change RSpec shared_context usage to avoid warnings. Submitted by Olle Jonsson.
* Change: Migrated source control to Apache GitBox which supports using either GitHub or GitBox as the
          master repository.

1.5.6 (2018-05-10)
* Fixed:  Ensure that the username and passwords declared for repositories are correctly url encoded for
          the upload repositories when converted to a URL. (i.e. Ensure `Buildr.repositories.release_to`
          and `Buildr.repositories.snapshot_to` settings can have usernames and passwords with special
          characters).
* Added:  Add support for allowing some dependencies to include transitive dependencies via the
          `pom.include_transitive_dependencies` configuration setting.
* Added:  Add support for adding dependencies to the pom via the `pom.additional_dependencies` configuration
          setting. These dependencies are `compile` scope and are in addition to any derived from the normal
          compile dependencies.
* Fixed:  GWT Addon: Use version `1.0.2` of the `com.google.jsinterop:jsinterop-annotations:jar` artifact
          when using GWT 2.8.2 to align with version shipped with GWT.
* Fixed:  Dependencies added as `pom.provided_dependencies` or `pom.runtime_dependencies` and not included
          as compile dependencies were incorrectly omitted from pom.
* Fixed:  Dependencies added as `pom.provided_dependencies` and `pom.runtime_dependencies` were being
          incorrectly duplicated within the pom dependencies section. Now provided dependency scope takes
          precedence over runtime scoped dependency.
* Fixed:  Dependencies added to POMs will specify the classifier unless it is the default value.
* Added:  Add the `project.pom.dependency_filter` configuration property that can be set to a proc. The proc
          accepts a dependency and returns a boolean that determines whether the dependency is included in
          the generated pom or not.
* Fixed:  POMs generated by Buildr use the parent pom `org.sonatype.oss:oss-parent:pom:7` but this
          generates a warning in the latest version of Maven. Modern versions of Maven would thus
          ignore transitive dependencies declared in the pom. The parent pom has now been upgraded
          to `org.sonatype.oss:oss-parent:pom:8` which will result in modern Maven correctly picking
          up transitive dependencies.
* Change: JaCoCo Addon: Update JaCoCo version to 0.8.0 which in turns supports Java9.
* Added:  GWT Addon: Added support for `:gwtc_args` parameter to supply arbitrary parameters to
          the GWT compiler.
* Added:  Add support for sha512 digests to be generated for files during the upload. This is typically
          configured by adding `sha512` to the list of digests via a line such as:
          `repositories.release_to[:options] = {:digests => [:md5, :sha1, :sha512]}`
* Fixed:  The default upload tasks would often get a ReadTimeout when uploading using http to a remote
          server that did not have `KeepAlive` socket option enabled and the upload took more than 60
          seconds (the default socket read timeout). Some commercial maven repositories could trigger
          this scenario during upload of even modest size artifacts. Default the read_timeout to 10 minutes
          when during upload to work address this issue.

1.5.5 (2017-12-06)
* Fixed:  The concatenation extension released as part of 1.5.4 changed the way zip archives were
          constructed so that entries for some intermediate directories were elided. For most consumers
          of zip files this had no impact but some tools require the entries during scanning. (i.e. Older
          versions of Jruby that loaded ruby scripts from within a jar).
* Added:  IDEA Extension: Added support for passing `:iml_name` parameter to `ipr.add_gwt_configuration`

1.5.4 (2017-11-29)
* Added:  Findbugs Addon: Upgrade to version 3.0.1 of findbugs.
* Added:  GPG Addon: Add boolean configuration setting `project.gpg` that can be set to false via
          `project.gpg = false` to avoid signing and uploading packages. This is useful when some
          projects are not intended for publishing.
* Fixed:  JaCoCo Addon: Projects that have jacoco disabled will no longer appear in the JaCoCo reports.
* Change: JaCoCo Addon: Update JaCoCo version to 0.7.9.
* Fixed:  BUILDR-733 - Escape classpath entries in the pathing jar manifest. Submitted by Glenn Croes.
* Fixed:  Ensure that the pom is attached to the jar artifact with empty classifier rather than the last
          artifact of a type defined. Otherwise a project that defines multiple artifacts of the same type
          (i.e. `package(:jar)` and `package(:jar, :classifier => :gwt)`) could have the pom named after
          the package with the classifier rather than the package without a classifer. (i.e. the pom could
          be incorrectly defined as `mypackage-1.0.0-gwt.pom` rather than `mypackage-1.0.0.pom`).
* Added:  GWT Addon: Add support for GWT 2.8.2 release and make it the default version unless otherwise specified.
* Added:  GWT Addon: Added support for `:js_exports` boolean to enable "JsInteropExports".
* Added:  IDEA Extension: Added support for `:open_in_browser` boolean passed to `ipr.add_gwt_configuration`
* Added:  BUILDR-732 - Support bnd version 2.1.0 or more. Submitted By Eric Bruneton.
* Added:  Support to compiling Kotlin
* Fixed:  Remove section on development builds in the Contributing section.
* Added:  New way to concatenate file contents when merging several archives together.
* Added:  New way to transform file contents when merging several archives together.
* Fixed:  Removed .class files from being checked in.
* Added:  Support both Jetty 6 and Jetty 9 as addons. Added integration tests to cover their use.

1.5.3 (2017-05-17)
* Change: Add support for gwt 2.8.1 to gwt addon.
* Fixed:  Avoid error "undefined local variable or method `pom'" when invoking the `JarTask` without it being
  registered through the `package` helper`. Reported by Dieter Vrancken.

1.5.2 (2017-04-03)
* Change: Update TestNG version to 6.11.
* Change: BUILDR-731 - Enhance Sonar addon to support configuration of the project version. Submitted by Ross Mahony.
* Fixed:  Fix pom generation to eliminate invalid `classifier` element from being added to POM.

1.5.1 (2017-03-11)
* Change: In the 'buildr/git_auto_version' addon strip out any versions that start with a 'v' character as
          most projects on git repositories prefix version tags with a "v" to avoid collisions with any branches
          named after the version which are typically without the "v" character.
* Fixed:  GWT Addon: The GWT project publishes invalid jars that can not be included on source path when
          the javadoc tool is executing. Work around this issue in GWT by removing them from the documentation
          class path.
* Change: IDEA: Change the ordering of dependencies in the IDE module descriptor such that test dependencies are
          first to allow test dependencies to override/shadow compile dependencies.
* Fixed:  IDEA: Correctly configure the IDE module if the language level differs from the root project language level.
* Change: Add css2gss task to gwt addon to support conveting from deprecated css syntax to modern gss syntax.
* Change: Add support for gwt 2.8.0 to gwt addon.
* Change: Remove orderedhash gem.
* Change: Update jruby-openssl to 0.9.17
* Change: Move hoe to the development dependencies
* Fixed:  BUILDR-728 Snapshots metadata incorrectly created
* Fixed:  BUILDR-718 Deprecate SVN repository - remove links to SVN
* Change: BUILDR-724 Use scalamain to call scala projects
* Change: BUILDR-719 Change User-Agent when uploading artifacts
* Change: Set the OPEN_IN_BROWSER to false when building idea launch targets via add_glassfish_remote_configuration.
* Change: BUILDR-709 Integrate `buildr/custom_pom` into core and just make it the default pom generated.
* Fixed:  BUILDR-563 protobuf addon including source directories to protoc breaks build

1.5.0 (2016-09-23)
* Change: Update RJB to 1.5.4
* Change: Update rubyzip to 1.2.0
* Change: Update hoe to 3.15.0
* Change: Update net-ssh to 3.1.1
* Change: Update json_pure to 1.8.3
* Change: Update diff-lcs to 1.2.5
* Change: Update xml-simple to 1.1.5
* Change: Update jekyll to 3.1.3
* Change: Update rdoc to 4.2.2
* Change: Update ecj to 4.5.1
* Change: Added jekyll-textile-converter 0.1.0 to generate the site.
* Change: Move to default on Scala 2.11.
* Change: Remove Buildr::Project#on_define, deprecated in 1.3
* Change: Remove JavaWrapper, deprecated in 1.3
* Change: Remove JUnit::REQUIRES, deprecated in 1.3.3
* Change: Remove TestNG::REQUIRES, deprecated in 1.3.3
* Change: Remove Buildr::Ant::REQUIRES, deprecated in version 1.3.3
* Change: Remove Buildr::CompileTask#classpath, deprecated in version 1.3
* Change: Remove Buildr::TestTask responding to :using with .using('foo','bar'), deprecated in version 1.3
* Change: Remove addon/buildr/cobertura.rb, deprecated since 1.3.4
* Change: Remove addon/buildr/emma.rb, deprecated since 1.3.4
* Change: Remove support for Rakefile/rakefile, deprecated.
* Change: Remove project#target, project#reports, deprecated.
* Change: Remove JBehave::REQUIRES, deprecated.
* Change: Remove JMock::REQUIRES, deprecated.
* Change: Remove ScalaCheck::REQUIRES, deprecated.
* Change: Change Eclipse Scala project natures from ch.epfl.lamp.sdt.core.scalanature to org.scala-ide.sdt.core.scalanature
* Change: Fix the custom Google search widget on the website.
* Change: BUILDR-722 Remove links and image of the buildr book from the website.
* Added:  Travis badge to README.rdoc
* Added:  Added Rubygems badges to README.rdoc
* Added:  BUILDR-577 Allow remote repo to be added with http basic auth support. Submitted by Michael Guymon.
* Added:  BUILDR-523 Issue a warning when Java.classpath is modified after Java.load has happened
* Added:  BUILDR-594 Added support for changing the verification mode of SSL certificates
* Added:  BUILDR-595 Added support to providing custom SSL certificates
* Added:  BUILDR-572 Allow to upload unique version (timestamp based) snapshot artifacts to a repository. Submitted by Brice Figureau.
* Fixed:  BUILDR-207 remove 'Skipping tests' messages
* Added:  BUILDR-703 release: allow THIS_VERSION to be defined in another file
* Fixed:  BUILDR-674 Artifacts with bundle extension cannot be downloaded by Buildr
* Fixed:  BUILDR-565 resources are not included in the war if defined after package call
* Fixed:  BUILDR-621 ZipTask creates zip file with entries not sorted by path causing very slow unzipping.
* Fixed:  BUILDR-695 transitive doesn't support ${project.parent.version} in POM.
* Fixed:  BUILDR-653 Using Eclipse compiler (ECJ)
* Fixed:  BUILDR-476 Buildr doesn't respect company repository manager
* Fixed:  BUILDR-454 Definition-level parent-child references-by-name fail in 1.4.0 but not in 1.3.5. Submitted by Rhett Sutphin.
* Fixed:  BUILDR-620 resources.filter should not run on non-text files
* Fixed:  BUILDR-489 Java + Scala joint compiler fails if default encoding and source file encoding are not same and special characters have been used in source code
* Fixed:  BUILDR-486 Buildr-generated poms should include dependencies
* Fixed:  BUILDR-723 JavaTestFilter is unable to parse paths containing %2F
* Change: Update the custom_pom addon to generate poms with exclusions section that excludes
          all transitive dependencies. This is required as buildr dependencies are not
          transitive while Maven's dependencies are transitive by default.
* Change: Remove the BND aqute maven repository, as it was decommissioned. Use Maven Central instead.

1.4.25 (2016-04-18)
* Change: BUILDR-712 Update jruby-openssl dependency version or support a range of versions
* Change: Update gwt addon to add the GWT artifacts to project dependencies as specs rather
          than files.
* Change: Support the project.root_project utility method to retrieve the top level project.

1.4.24 (2016-03-19)
* Added:  Support the :no_invoke parameter being passed to Buildr.project() and
          Buildr.projects() to avoid attempting to call invoke when retrieving the projects.
* Added:  Add `exclude_paths` setting to pmd addon to allow paths to be explicitly excluded.
* Fixed:  Update jDepend addon to ensure target directories are invoked prior to attempting
          to analyze directories.
* Added:  Add jdepend.additional_project_names configuration to jDepend addon to
          ease merging in the source paths from multiple projects into one jDepend task.
* Added:  Add findbugs.additional_project_names configuration to Findbugs addon to
          ease merging in the source paths from multiple projects into one Findbugs task.
* Added:  Add checkstyle.additional_project_names configuration to Checkstyle addon to
          ease merging in the source paths from multiple projects into one Checkstyle task.
* Added:  Add pmd.additional_project_names configuration to PMD addon to ease merging in
          the source paths from multiple projects into one PMD task.
* Fixed:  In the PMD addon, check that the source directory exists before adding to
          sources directories to include.
* Fixed:  BUILDR-709 - Fix "Exception in jacoco.rb [TypeError : can't convert Array into
          String]". Submitted By Ross Mahony.
* Added:  Define the 'activate_jruby_facet' addon that activates the jruby facet in
          generated IDEA project modules.
* Change: Update the Intellij IDEA plugin to support marking directories as generated.
* Change: Update the Intellij IDEA plugin to correctly identify project paths as resource
          directories.
* Change: Update the default GWT version used in the GWT addon to the latest release 2.7.0.
* Fixed:  Fix GWT addon to explicitly add gwt-dev artifact to gwt compile path now that
          the bug that allowed unintended sharing has been fixed.
* Fixed:  Fix bug in IDEA module generation that resulted in dependencies in IDEA module
          using shared references to compile dependencies.
* Change: Update the checkstyle addon to use checkstyle 6.12.1.

1.4.23 (2015-06-12)
* Change: BUILDR-706 - Update the checkstyle addon use checkstyle 6.6. Submitted
          by Dieter Vrancken.
* Fixed:  Fix Buildr.rspec_present? so that it works under jruby 1.6.7.2
* Change: BUILDR-705 - Avoid attempting to load rspec classes unless Buildr.rspec_present?
          returns true. Reported By rbpandey.
* Fixed:  Remove debug output left in ipr.sql_dialect_mappings.

1.4.22 (2015-02-28)
* Change: BUILDR-704 - Updated the Sonar addon to support the latest version of SonarQube
          Runner. Submitted by Ross Mahony.
* Added:  Add support for ipr.add_glassfish_remote_configuration method that generates
          a remote glassfish configuration in IntelliJ IDEA project files.
* Added:  Add support for iml.prefix and ipr.prefix settings that prefix the generated
          IntelliJ IDEA project and module files.
* Change: Update the buildr gemspec so that rspec is no longer a required dependency.
          This enables end-users to use a different version of rspec and buildr in
          the same project. The rspec version MUST be be compatible with the version
          used by Buildr if rspec features are used from within Buildr. Buildr also
          issues a warning if the `check` method is called and rspec has not been loaded.
          The warning includes directions on how to resolve the issue. Submitted by r6p.
* Fixed:  A long standing bug existed such that if tests failed to compile, and the
          option Buildr.options.test is set to :all then the compilation error would
          not result in a failed build. As many people set the Buildr.options.test to
          :all in their continuous delivery/integration tools, this has caused some
          problems. This has been fixed by ensuring all the problems associated with
          the resolving the prerequisites are not caught when Buildr.options.test is
          set to :all.
* Change: Update checkstyle to 6.1.1. Submitted by neher.
* Fixed:  Avoid empty dependency issue in gwt addon if the attempting to gwt compile
          a project that has no src/main/java.
* Fixed:  Support dependencies in the gwt addon that are other local projects rather
          that artifacts, without forcing a compilation of dependency when parsing
          buildfile.
* Added:  Support configuration of sql dialect mapping in IDEA generated project files
          through methods on the ipr extension ipr.mssql_dialect_mapping,
          ipr.postgres_dialect_mapping and ipr.sql_dialect_mappings
* Added:  Support specification of the target project to which the gwt compilation
          artifacts are added as an asset, by using :target_project option.

1.4.21 (2014-11-28)
* Change: Upgrade atoulme-Antwrap to 0.7.5 to remove deprecation warnings in
          modern JRuby. Suggested by Pepijn Van Eeckhoudt.
* Change: Update the gwt addon to add the validation dependencies required for GWT
          compiles without requiring that the user specify the dependency.
* Change: Update ipr.add_gwt_configuration method to support GWT 2.7 configuration
          parameters and IDEA 14 parameters.
* Change: Upgrade jacoco to 0.7.2. Submitted by neher.
* Change: Update checkstyle addon to use Checkstyle 6.0.
* Added:  Updated the gwt addon to support the upcoming GWT 2.7.x release.
* Change: Enhance ipr.add_glassfish_configuration to support the ability to
          define the version of GlassFish in uses. Change the default to 4.1.0
          as that is the latest supported variant.
* Fixed:  Change the name of the GlassFish install in ipr.add_glassfish_configuration
          to use the same convention that IDEA uses by default. i.e. Name the
          installation "GlassFish 4.1.0" rather than "Glassfish 4.1.0".
* Change: Change the default version of the jdk in IDEA project files to 1.7.
* Change: Change the default version of the IDEA project files created to the
          current release version 13. To revert to the older versions specify
          ipr.version = '12' in your buildfile.
* Added:  Enhance the IdeaFile class to easily support mixing in of custom
          components from either the filesystem or from an artifact.
* Change: Update rjb to version 1.5.1.
* Added:  Update checkstyle addon to support downloading checkstyle checks
          as an artifact.
* Added:  Update checkstyle addon to supply checkstyle.config.dir property.
* Added:  Update pmd addon to support downloading rule files as an artifact.
* Change: Update pmd addon to use pmd version 5.1.3.
* Fixed:  BUILDR-702 - Retain Unix permission flags when merging
          zip files into another zip or tar archive. Submitted by Pepijn Van Eeckhoudt.

1.4.20 (2014-08-23)
* Fixed : BUILDR-688 - Disregard package-info.java files when determining if
          the Javac compiler should be run or not. Submitted by Pepijn Van
          Eeckhoudt.
* Fixed : Work around bug/feature of jruby 1.7.13 that caches Gem::Version
          objects based on constructor parameters that causes issues with
          Buildr as we mutate the version objects through monkey patching.
* Change: Upgrade rjb dependency to 1.4.9.
* Change: BUILDR-701 - Update to JUnit 4.11. Submitted by Jean-Philippe Caruana.
* Added:  Support the 'report_level' property on findbugs addon.
* Change: Update the findbugs addon to use the 3.0.0 version of Findbugs.
* Change: Update the findbugs addon to use the built-in findbugs stylesheet
          to generate the html report.
* Fixed:  Ensure that the 'source_paths' and 'extra_dependencies' properties
          in the findbugs addon does not contain arrays or nils.
* Fixed:  Ensure that the 'single_intermediate_layout' addon removes the top
          level target and reports directories during 'clean' phase.
* Added:  Enhance idea project generation of ejb facet by looking for ejb
          descriptors in location compatible with ejb-jars.
* Fixed:  Ensure that the 'source_paths' property in the pmd addon does not
          contain arrays or nils.

1.4.19 (2014-07-06)
* Fixed:  BUILDR-700 - Ensure SNAPSHOT artifacts, constructed using the
          download(artifact('group:artifact:jar:1-SNAPSHOT') =>
          'http://example.com/...') construct will correctly download the
          artifacts from configured URL.
* Fixed:  BUILDR-700 - Fix bug where buildr was truncating SNAPSHOT files
          that had not changed since last update check and HTTP was returning
          "HTTP Not Modified" status.
* Fixed:  Fix bug introduced in 1.4.18 version of custom_pom addon where
          poms are created for artifacts that have a classifier.

1.4.18 (2014-06-24)
* Fixed:  BUILDR-699 - Update the custom_pom addon to avoid failure when
          used with zip packages.
* Fixed:  BUILDR-694 - "buildr upload" fails: wrong number of arguments in
          progress bar read() in Ruby 2.1.0. Submitted By Mark Reibert.
* Change: Remove support for uploads to RubyForge.org with gem dependencies
          as the site no longer exists.
* Change: BUILDR-664 - Update Checkstyle addon so that extra_dependencies is
          the project dependencies by default. Move the checkstyle dependencies
          to the start of the classpath to avoid problems running checkstyle.
          Submitted by Dieter Vrancken.
* Fixed:  BUILDR-698 - Correct "Lines of code" example in documentation.
          Submitted By: Trejkaz.
* Added:  Add ipr.add_glassfish_configuration method for defining a local
          glassfish configuration within IDEA.
* Added:  Add ipr.add_ruby_script_configuration method for defining a ruby
          configuration within IDEA.
* Added:  Add ipr.add_java_configuration method for defining a java
          configuration within IDEA.
* Change: Include additional rules in default pmd rule set: 'finalizers' and
          'braces'.
* Change: Upgrade the version of PMD in use to 5.1.1.
* Change: Supply a default xsl file for generating the jdepend report.
* Fixed:  Fix the naming of css_lint addon file so it is made available
          as an addon.

1.4.17 (2014-05-25)
* Added:  Add the add_default_testng_configuration method to help IDEA
          project creation. Improves test coverage across 'default'
          configurations.
* Fixed:  Fix a bug where 'default' configurations in IDEA projects
          were being incorrectly created.
* Fixed:  Fix the vcs detection in IDEA addon for 1.8.6 (!) versions
          of ruby by reordering blocks.
* Change: Supply a default xsl file for generating the checkstyle
          report.
* Added:  Add csslint tasks css_lint:xml and css_lint:html that
          support source code analysis of CSS files.
* Added:  Add scss_lint tasks scss_lint:xml and scss_lint:html that
          support source code analysis of SCSS files.
* Added:  Import 'buildr/custom_pom' addon to make it easier to
          build POMs for projects publishing to Maven Central.
* Added:  Add flag to allow non portable extensions in wsgen addon.
* Fixed:  Avoid nil dereference bug in GWT addon when running GWT in
          a project that has no source directory.

1.4.16 (2014-05-03)
* Added:  Add the ability to generate a html report when using the
          jacoco addon. Extracted from the ode project.
* Fixed:  Remove the projectname.ids file when rebuilding the idea
          project file avoiding conflict with idea.
* Fixed:  Avoid passing duplicate -keep parameters to wsimport from
          wsgen addon.
* Change: Improved the error handling when generating java from wsdl
          in the wsgen addon.
* Change: Upgraded the Checkstyle plugin to use checkstyle 5.7 that
          improves Java 7 compatibility.
* Added:  Add support for configuration of the schema-pattern,
          table-pattern and default-schemas settings in idea's
          data source definitions.
* Change: Upgraded the PMD plugin to use pmd 5.0.5 which for Java 7
          compatibility.
* Change: Derive the version of GWT in gwt addon from supplied
          dependencies.
* Fixed:  Include the compiled classes on path for GWT addon to
          ensure the GWT compiler can load annotations.
* Change: Derive the GWT version from build settings if not
          explicitly specified by GWT addon.
* Change: Support prefixing the version generated by the
          gwt_auto_version addon with the environment
          variable "VERSION_PREFIX".
* Fixed:  Support overriding the GWT version used by the GWT addon.
* Fixed:  Fix problem when the :dependencies option was not
          passed to the GWT addon.
* Fixed:  Avoid crash in GPG addon if unable to create a pom
          for an artifact.
* Fixed:  Correct location of Git mirror in the README. Submitted
          by Marcos Sainz.

1.4.15 (2013-11-06)
* Change: Update to TestNG 6.8.7.
* Change: Updated the 'test_jar' package type to have a
          classifier of 'tests' and thus match maven
          conventions. Reported by Chris Bozic.
* Fixed:  BUILDR-689 - Ensure that war file includes generated
          assets rather than the "source" assets that may have
          been filtered.
* Fixed:  BUILDR-689 - Define assets task before the project is
          defined to avoid "undefined method `project='" if the
          project attempts to generate into the same directory.
* Added:  BUILDR-679 - Support uploading to a snapshot repository
          defined by repositories.snapshot_to if the artifact is
          a snapshot. Submitted by Tammo van Lessen.
* Change: Update the jaxb_xjc addon to add output directory to
          generated IDEA project files.
* Change: Update the default output directory used in the jaxb_xjc
          addon to use Maven conventions.
* Fixed:  Bug in IdeaProject.partition_dependencies resulted in
          projects being rebuilt if artifacts were added to the
          project with dependencies on the current project.
* Fixed:  BUILDR-605 - Ensure package task invokes included paths.
* Fixed:  BUILDR-609 - compile.from should accept Task argument.

1.4.14 (2013-10-11)
* Change: Remove highline dependency.
* Fixed:  BUILDR-682 - Fix the documentation for releasing using
          your own versioning scheme. Submitted by Jean-Philippe
          Caruana.
* Fixed:  BUILDR-681 - Stop empty projects creating target/webapp.
* Change: Add dependency from generated jws client source directory
          to the source wsdl in the wsgen addon.
* Fixed:  Fixed regression in gwt addon due to "pathing_jar"
          functionality in Java::Commands.java.
* Change: Support disabling the new "pathing_jar" functionality in
          Java::Commands.java utility method. Required for tools
          that introspect the classpath.
* Change: Update wsgen addon to generate source into a directory
          hierarchy based on maven conventions.
* Fixed:  Fixed regression using transitive dependencies due to
          presence of :scope option in Artifacts.to_hash.
* Fixed:  Fixed bug in GWT addon that required that the user supply
          the :dependencies option.
* Fixed:  Fixed bug in Intellij project file generation when adding
          a web facet.

1.4.13 (2013-10-02)
* Fixed:  BUILDR-439 - Fix java command under windows when supplied
          with extremely long classpath. Submitted By Tammo van Lessen.
* Fixed:  BUILDR-394 - Fix release task with standalone distribution.
          Submitted By Tammo van Lessen.
* Added:  BUILDR-678 - Improve support for gpg signing artifacts
          using a single method.
* Fixed:  BUILDR-677 - GPG addon hangs when .asc files are still in
          target. Submitted By Tammo van Lessen.
* Added:  Initial support for data source creation in Intellij IDEA
          project files.
* Fixed:  BUILDR-676 - Rework Java::Command:java so that it does not
          reject the :dir option. Reported by John Roth.
* Added:  Auto-detect jpa provider in Intellij IDEA facet generation if
          persistence.xml file is present and provider not specified.
* Added:  Auto-detect jruby version in Intellij IDEA facet generation if
          .ruby-version file is present.
* Added:  Improve support for auto-detection of ejb and web descriptors
          within Intellij IDEA project generation.
* Change: Default to setting the "User-Agent" header to "Buildr-VERSION"
          when accessing http resources. Maven Central rejects requests
          without a User-Agent string.
* Change: Change default scope of dependencies to 'compile'. Submitted
          by Ingo Schmidt.
* Change: BUILDR-675 - Set Cache-Control to 'no-cache' when downloading
          artifacts. Submitted by Félix Enrique Llorente Pastora.
* Added:  Initial support for simple integration of an asset pipeline.
          See "Compiling Assets" section in the manual.
* Fixed:  BUILDR-673 - Fix the option handling of the MultiTest test
          framework to behave as documented. Only the framework specific
          options are passed to the test. Submitted by John Roth.
* Added:  BUILDR-672 - Persist the properties field in the checkstyle
          addon so that they can be modified by the user. Submitted
          by Wim C.
* Fixed:  Make the package_as_* methods public so that the methods are
          detected in Ruby >= 2.0.0 via the respond_to? method.
* Change: Updated dependency versions;
          - rspec-expectations (2.14.3)
          - rspec-mocks (2.14.3)
          - rspec-core (2.14.5)
          - rspec (2.14.1)
          - minitar (0.5.4)
          - ci_reporter (1.8.4)
          - xml-simple (1.1.2)
          - rjb (1.4.8)
          - diff-lcs (1.2.4)
          - builder (3.2.2)
          - net-ssh (2.7.0)
          - net-sftp (2.1.2)
          - hoe (3.7.1)
          - json_pure (1.8.0)
          - highline (1.6.19)
* Fixed:  BUILDR-668 - Specify File::FNM_EXTGLOB for include globs
          where needed in Ruby >= 2.0.0. Reported by Yavor Nikolov.
* Fixed:  Ensure generation of buildfiles from eclipse projects will
          finds .project files in Ruby >= 2.0.0.
* Fixed:  Patch Rake::FileList in Ruby >= 2.0.0 to match dot files if
          a .* pattern is supplied as in earlier versions of ruby.
* Fixed:  Make Archive-related operations (e.g. zip.merge) deterministic using
          OrderedHash.
* Change: Update to TestNG 6.8.5.

1.4.12 (2013-05-04)
* Added:  BUILDR-648 Add new package(:test_jar) packaging type.
          Submitted by Mike Pettypiece.
* Fixed:  BUILDR-666 ZipFile.open modifies file regardless of usage.
          Reported by Pepijn Van Eeckhoudt, fix by Alex Boisvert.
* Change: Moved to using TravisCI to test the Linux variants.
* Added:  Make the location of the wsdl in generated source configurable
          in the wsgen addon.
* Added:  When generating the GWT facet for Intellij IDEA modules, use
          the gwt-dev maven artifact dependency if present as the SDK,
          falling back to the existing behaviour if not possible.
* Added:  Improved support for auto-detection of VCS dirs when creating
          IDEA projects.
* Added:  Added support for SuperDevMode in gwt addon and upgraded to
          GWT 2.5.1 by default.
* Change: BUILDR-664 Update Checkstyle addon so that extra_dependencies is
          empty by default. Submitted by Dieter Vrancken.
* Fixed:  BUILDR-663 require 'buildr' fails for Ruby 2.0.0.
* Fixed:  BUILDR-665 Java artifacts in build.yaml breaking ArchiveTask.
          Submitted by Antonio Pérez Barrero.
* Fixed:  BUILDR-662 reported time is much shorter than actual

1.4.11 (2013-03-14)
* Fixed:  Multiple tests in TestNG 6.x versions were being incorrectly passed to
          the command line application.

1.4.10 (2013-02-10)
* Added:  Support a single intermediate directory for each project hierarchy
          through an addon 'buildr/single_intermediate_layout'.
* Fixed:  BUILDR-660 possible build issue when using build.yaml and tasks/*.rake
          (Félix Enrique Llorente Pastora)
* Added:  Support the :dir option in the Java::Commands.java method.
* Fixed:  Scala 2.10 support - compiler now uses additional/separate jars
          introduced in 2.10 such as scala-reflect.jar and scala-actor.jar
* Added:  Add an addon for NSIS.
* Change: BUILDR-612 - Support the TestNG 6.x versions and default
          to 6.8.
* Added:  BUILDR-599 - Support the passing of arguments to testng
          test runner.
* Fixed:  Observer the per-project source version when generating
          IDEA module files.
* Change: Sort the components in IDEA project files in the same
          order the idea sorts them.
* Fixed:  Findbugs addon correctly handles String dependencies
          (vs task dependencies)
* Fixed:  Checkstyle addon correctly handles String dependencies
          (vs task dependencies)
* Added:  Created an addon 'buildr/wsgen' for generating wsdls from java
          and java from wsdls using the underlying wsgen tool.
* Change: Defer the expansion of generated poms by wrapping the generation
          in a Proc.
* Change: Rework Artifact.content(value) method to accept a Proc that
          will be called before the artifact is written rather than
          requiring a string.
* Added:  Create a 'buildr/gpg' addon that signs and uploads signatures
          when uploading artifacts. Inspired by a similar extension in
          the Apache ODE project by Tammo van Lessen.
* Change: Updated dependency versions;
          - jruby-openssl (0.8.2)
          - atoulme-Antwrap (0.7.4)
* Change: Require 'bundler/setup' as part of buildr startup to ensure that
          buildr always runs with up to date dependencies if a Gemfile is
          present.
* Added:  Add FrameworkDetectionExcludesConfiguration facet to Idea project
          file creation by default.
* Fixed:  In the IntelliJ extension, defer the materialization of the
          default_components until expansion time to avoid loss of sub-
          components added after an add_component call.
* Fixed:  BUILDR-633 - Remove hardcoded shebang lines in all-in-one release.
* Added:  Create a simple extension that modifies the project layout to place
          generated files at the top level.

1.4.9 (2012-11-08)
* Fixed:  Fixed the interaction with the FileUtils classes. The last release
          introduced a non-deterministic bug that sometimes caused logging
          preferences to be ignored and the install method to be
          inadvertently overwritten.

1.4.8 (2012-11-01)
* Change: Revert to importing non-verbose FileUtils utility methods to match buildr 1.4.6 release and earlier.
* Added:  Experimental support for jacoco code coverage tool.
* Fixed:  BUILDR-655 - Support JDK1.7 under OSX
* Change: Updated dependency versions;
          - builder (3.1.3)
          - rubyforge (2.0.4)
          - net-ssh (2.6.0)
          - hoe (3.1.0)
          - rjb (1.4.2)
          - rdoc (3.12)
          - xml-simple (1.1.1)
          - rspec-expectations (2.11.3)
          - rspec-mocks (2.11.3)
          - rspec-core (2.11.1)
          - rspec (2.11.0)
          - rubyzip (0.9.9)
* Added:  BUILDR-652 Generate buildfile from Eclipse workspace. (Niklaus Giger)
* Fixed:  BUILDR-627 Support explicitly listed source files in buildr cc task. (Christopher Tiwald)
* Fixed:  BUILDR-606 Transitive artifact resolution should not include artifacts in 'provided' scope in poms to
          match maven behaviour. (Julio Arias)
* Change: BUILDR-640 Enable building jekyll and rdoc under more rubies. (Niklaus Giger)
* Change: Mark Buildr:Bnd.remote_repository as deprecated as dependencies appear in maven central.
* Added:  BUILDR-654 Add the ability to configure the version of BND used by bnd addon. (Niklaus Giger)
* Added:  Create the git_auto_version addon that automatically specifies a version for a git project based
          on git describe.
* Added:  Integrate with Zinc (incremental compilation wrapper for scalac 2.9+)
* Change: Default to Scala 2.9.2, ScalaTest 1.8, Scala Specs2 1.11,
          ScalaCheck 1.10.0.
* Change: Scala artifact repository changed to
          http://oss.sonatype.org/content/repositories/releases
* Added:  BUILDR-645 Support Mercurial as a version control system (Tan Quach)
* Fixed:  BUILDR-646 TGZ files do not keep their permissions when extracted
          via Buildr::Unzip#extract
* Added:  Add add_exploded_ear_artifact and add_exploded_ejb_artifact to the idea project extension.
* Change: Default to using Checkstyle 5.5 in the checkstyle addon.
* Fixed:  Fix the add_exploded_war_artifact method on the idea project by adding in missing method
          `partition_dependencies`.
* Fixed:  Fix the extension of the gwt plugin so that it can be required as an addon.
* Fixed:  Fix the undefined default_web_xml variable in the add_web_facet method on the idea project.

1.4.7 (2012-05-29)
* Added:  BUILDR-618 pom properties feature does not support hierarchy (kafka liu)
* Added:  Add a Sonar extension.
* Change: BUILDR-638 Update to rake 0.9.2.2 (Russell Teabeault)
* Added:  BUILDR-316 Add a GWT extension
* Change: BUILDR-624 Update rspec version to 2.9.0 (Russell Teabeault)
* Change: BUILDR-632 Update net-ssh version to 2.3.0 (Russell Teabeault)
* Change: BUILDR-632 Update net-sftp version to 2.0.5 (Russell Teabeault)
* Fixed:  BUILDR-635 JRE container entry to be declared before user sources and dependencies (Dani Perez)
* Change: BUILDR-639 Stop requiring pygmentize to run "rake -T" (Russell Teabeault)
* Added:  Enhance the IDEA extension to support the addition of several explicit facets such as
          ejb, jruby, jpa, web and gwt.
* Added:  Add several utility methods to IDEA extension for defining artifacts and configurations.
          Add some explicit methods to support a gwt configuration and a "Exploded War" artifact.
* Change: Upgraded to Apache Ant 1.8.3
* Change: Default maven2 repository is now repo1.maven.org/maven2.
* Change: Make minimumTokenCount and encoding configurable for the PMD/CPD action
          and default encoding to UTF-8 for compatibility with external tools (i.e. Jenkins)
* Change: BUILDR-615 VersionRequirement.version? now returns true for
          versions following pattern "r9999", e.g. "r09"
* Change: BUILDR-630 Run task should not add test dependencies (Russell Teabeault)
* Change: BUILDR-629 JavaRunner should include target/resources in classpath (Russell Teabeault)
* Fixed:  BUILDR-617 pom exclusion does not work (Kafka Liu)
* Added:  Add a Findbugs extension.
* Added:  Add a Checkstyle extension.
* Added:  Add a JavaNCSS extension.
* Added:  Add a PMD extension.
* Added:  MultiTest framework that allows combining multiple test frameworks
          for a single project.
* Added:  Scala Specs2 framework support.
* Added:  Buildr.transitive() now accepts hash with :scopes, :optional and
          :scopes_transitive parameters
* Added:  Improved scala file change detection
          (to avoid recompiling  unnecessarily)
* Added:  ScalaTest now automatically loads the Mockito library
* Added:  Enhance the Intellij IDEA extension to support the addition of "artifacts"
          and "configurations" to the generated project file.
* Added:  BUILDR-598 TestNG support for :groups and :excludegroups (Christopher Coco)
* Added:  BUILDR-616 Buildr development - If using rvm a default .rvmrc file would be helpful (Russell Teabeault)
* Change: Scala Specs upgraded to 1.6.9 if using Scala 2.9.1
* Change: Scala 2.9.1 is now default
* Change: Make it possible to parameterize the JDepend extension and control the
          projects that are included in the analysis and to enable support for
          loading a per project jdepend.properties.
* Change: Parameterize the the directory where the top level cobertura tasks will generate
          reports. Specify using Buildr::Cobertura.report_dir = '....'
* Change: Stop pretty printing the Intellij IDEA project files to avoid IDEA breaking
          in the presence of non-normalized whitespace content.
* Change: Change the Intellij IDEA extension to always rebuild the project files.
* Change: Upgrade to require atoulme-Antwrap 0.7.2
* Change: Changed the default output directory for Intellij IDEA extension to be
          _(:target, :main, :idea, :classes) from _(:target, :main, :java) and the
          default test output directory to be _(:target, :test, :idea, :classes)
          from _(:target, :test, :java)
* Change: Upgrade to highline 1.6.2
* Change: Upgrade to jekyll 0.11.0, jekylltask 1.1.0, RedCloth 4.2.7, rdoc 3.8 for
          generating documentation
* Change: Upgrade to require rubygems > 1.8.6
* Change: BUILDR-603 Remove install/uninstall actions from :gem packaging type
* Change: BUILDR-602 Fail the build when gem dependencies are missing rather than
          attempting to install the dependencies
* Change: BUILDR-601 Remove Buildr::Util::Gems
* Change: BUILDR-600 Centralize the common ad internal requires into one location.
* Change: Upgrade to JRuby 1.6.2
* Change: Move to Bundler to manage the project dependencies
* Change: BUILDR-548 Remove support for JTestR as it is no longer maintained (Antoine Toulme)
* Change: BUILDR-614 Buildr development - Using rvm, bundler and OSX installs the wrong rjb (Russell Teabeault)
* Change: Upgrade to RJB 1.4.0
* Fixed:  ArtifactNamespace fails when using artifacts with classfier.
* Fixed:  Buildr.artifacts() should handle any object with :to_spec method
          (i.e., any object that ActsAsArtifact)
* Fixed:  Handle HTTP Unauthorized (501) result code when downloading artifacts.
* Fixed:  BUILDR-611 Buildr should not unnecessarily recompile Java files
          explicitly added to compile.from
* Fixed:  scaladoc generation with scala 2.9.x
* Fixed:  Bnd Plugin: Add each artifact individually as a prerequisite to
          bundle / package task when passed to classpath_element method
* Fixed:  BUILDR-439 "The command line is too long" when running TestNG tests (Tammo Van Lessen)
* Fixed:  BUILDR-595 Add option to specifiy location of ca cert
* Fixed:  BUILDR-596 Update installation notes to talk about the all-in-one bundle

1.4.6 (2011-06-21)
* Added:  BUILDR-592 Allow Users to Specify SSH Options for Deployment (Marc-André Laverdière)
* Fixed:  BUILDR-591 Sort modules in iml files generated by idea task to ensure
          main_dependencies are exported
* Added:  Support for Scala 2.9.0+ (with help of Alexis Midon)
* Fixed:  BUILDR-583 Update jruby install to use jruby version 1.6.1 (Alexis Midon)
* Fixed:  BUILDR-582 Revert the name change for the task to generate Intellij
          project files to 'idea'
* Change: BUILDR-579 Format generated IDEA project files to look more like what
          IntelliJ generates (Peter Royal)
* Change: BUILDR-574 Enhance idea task to generate test resources with test scope
          (Jean-Philippe Caruana)
* Change: BUILDR-576 Upgrade to JUnit 4.8.2
* Change: Upgrade to JRuby 1.6.2
* Change: Scala 2.9.0-1 is now default, along with ScalaCheck 1.9, ScalaTest 1.6.1
          and Specs 1.6.8.
* Change: ScalaCheck, ScalaTest and Specs now default to sane versions when using
          older Scala versions.
* Fixed:  BUILDR-571 Generated IDEA projects include resources multiple times (Peter Royal)
* Fixed:  BUILDR-573 HTTP upload PUT request with incorrect Content-Type (Mathias Doenitz)
* Fixed:  BUILDR-578 Tar task does not preserve uid/gid on folders (Jean-Philippe Caruana)
* Fixed:  BUILDR-251 Classifier not handled when downloading snapshot artifacts (Ryan Fowler)
* Fixed:  BUILDR-585 "TypeError : can't dup NilClass" when merging jars
* Fixed:  BUILDR-586 ScalaTest uses deprecated ant task (Martin Partel)
* Fixed:  BUILDR-584 eclipse plugin should use absolute path
* Fixed:  BUILDR-587 ScalaTest uses deprecated reporter parameters

1.4.5 (2011-02-20)
* Added:  BUILDR-555 Add support for the jaxb binding compiler (Mark Petrovic)
* Added:  BUILDR-554 Add support for OSGi bundle packages by importing the
          buildr_bnd plugin
* Added:  BUILDR-125 Add support for <security-role> in application.xml of
          EAR packaging (Mikael Amborn)
* Added:  BUILDR-550 Add support for groovydoc
* Added:  BUILDR-521: System tray notifications for Linux systems
          (via libnotify/notify-send)
* Added:  BUILDR-537 Shell tasks should use JAVA_OPTS by default
* Added:  BUILDR-538 Shell tasks should support passing :java_args
* Added:  BUILDR-544 Support ${groupId} in pom files (Chris Dean)
* Added:  BUILDR-552 Projects may now be defined using project(:name) and a block
* Added:  BUILDR-564 Add package(:scaladoc)
* Added:  Automatically add "require buildr/{groovy,scala}"  when generating
          project if Groovy/Scala files are detected.
* Change: BUILDR-540 Upgrade to rspec 2.1.0
* Change: BUILDR-546 Upgrade to Rubyzip 0.9.4 (Michael Guymon)
* Change: BUILDR-556 Merge buildr-iidea extension back into buildr.
* Change: Upgrade default Scala compiler version to 2.8.1-final
* Change: Upgrade to ScalaCheck 1.8
* Change: Upgrade to ScalaTest 1.3
* Change: Upgrade to Specs 1.6.6
* Change: Upgrade to JRuby 1.5.6
* Fixed:  BUILDR-542 Release task:  SVN tagging fails if parent tag directory
          does not exist yet (Gerolf Seitz)
* Fixed:  BUILDR-543 POMs are installed and uploaded twice when using artifacts
          with classifier
* Fixed:  BUILDR-522 Send notifications when continuous compilation
          succeeds/fails.
* Fixed:  BUILDR-551 Continuous compilation not working for project trees
* Fixed:  BUILDR-557 MD5 + SHA1 checksums are not Maven compliant (Tammo van Lessen)
* Change: Upgrade to Groovy 1.7.5
* Change: BUILDR-545 Add the ability to specify the description element in in
          application.xml contained within an ear.
* Fixed:  BUILDR-547 - Ensure ECJ compiler works when there is a space in the
          path of dependencies.
* Fixed:  BUILDR-558 Artifact uploads should show a progress bar (Tammo van Lessen)
* Fixed:  BUILDR-560 show a meaning full error message when POM cannot be parsed
          (Tammo van Lessen)
* Fixed:  BUILDR-562 WAR package isn't updated if files under src/main/webapp
          are updated
* Fixed:  BUILDR-569 Buildr fails under JRuby 1.6.0.RC1 due to read-only $? variable
* Fixed:  BUILDR-570 Buildr does not work with Rubygems 1.5.x
* Fixed:  Scaladoc task would cause build to exit prematurely

1.4.4 (2010-11-16)
* Change: BUILDR-549 Upgrade to RJB 1.3.3 to address "Cannot create JVM" issue with Java Update 3
          on Mac OS X.  Win32 platform upgraded to RJB 1.3.2.
* Change: RSpec gem dependency ~> 1.3.1
* Change: Upgrade to JtestR 0.6

1.4.3 (2010-10-15)
* Added:  BUILDR-514 New 'run' local task. http://buildr.apache.org/more_stuff.html#run
* Added:  BUILDR-518 Load _buildr.rb or .buildr.rb from same directory as Buildfile
          if they exist (Peter Donald)
* Added:  BUILDR-519 Load repositories.release_to from build settings (Peter Donald)
* Fixed:  BUILDR-520 Scaladoc 2.8 no longer support -windowtitle, use -doc-title instead.
* Fixed:  BUILDR-512 Buildr::Util.ruby invokes non existent method (Peter Donald)
* Fixed:  BUILDR-513 --trace fails with NoMethodError : undefined method
          `include?' for nil:NilClass
* Fixed:  BUILDR-515 -update-snapshot doesn't work as expected
* Fixed:  BUILDR-517 package(:jar).include(directory, :as=>"foo") produces a corrupted jar
* Fixed:  BUILDR-524 Optimized and more robust reading of jar MANIFEST.MF (Hugues Malphettes)
* Fixed:  BUILDR-525 Documentation refers to repositories.upload_to rather than
          repositories.release_to (Peter Donald)
* Fixed:  BUILDR-526 Gracefully handle h2 sections with no id in documentation (Peter Donald)
* Fixed:  BUILDR-527 package(:war) if libs passed are files (instead of artifacts)
* Fixed:  BUILDR-528 Stop using deprecated method Gem::Dependency.version_requirements correctly (Peter Donald)
* Fixed:  BUILDR-529 Stop using gem name "foo" in tests as it is the name of an actual gem (Peter Donald)
* Fixed:  BUILDR-531 Improve error message when build requires gem that can't be found in local/remote
          gem repositories (Peter Donald)
* Fixed:  BUILDR-532 package_as_source does not package resources (Tammo van Lessen)
* Fixed:  BUILDR-534 package_with_sources does not package source artifacts if no sources but resources exist.
          (Tammo Van Lessen)
* Fixed:  BUILDR-535 Failing "checks" produce no meaningful errors  on JRuby
* Fixed:  JavaRebel was previously not correctly detected.

1.4.2 (2010-09-18)
* Added:  BUILDR-415 Ability to exclude tests from command line
* Added:  BUILDR-495 Document twitter on Buildr's homepage
* Added:  BUILDR-212 Update support for SNAPSHOT artifacts (Timo Rantalaiho and Izzet Mustafa)
* Added:  BUILDR-465 Eclipse project names should be customizable
* Added:  BUILDR-493 Eclipse task should generate javadocpath
* Added:  BUILDR-509 Option to generate non-prefixed Eclipse project names
* Added:  BUILDR-510 Add support for trace categories: --trace=foo,bar
* Added:  Integration test to show how to change the war packaging spec.
* Added:  Integration test to show how to use junit 3.
* Added:  Integration test to show how to get ahold of parent project
* Change: BUILDR-473 Update jruby-openssl dependency version or support a range of versions
* Change: BUILDR-478 Upgrade to net-ssh 2.0.23 and net-sftp 2.0.4 (Shane Witbeck)
* Change: BUILDR-475 Support for long names on tar.gz (updated to minitar 0.5.3)
* Change: BUILDR-484 Upgrade to Scala 2.8.0 (final) and associated dependencies
          (ScalaCheck 1.7, ScalaTest 1.2, Specs 1.6.5)
* Change: BUILDR-487 package :sources should default to using .jar extension (instead of .zip)
* Change: Upgrade to Jruby 1.5.2
* Fixed:  BUILDR-143 Upload to a file:// path needs ability to specify permissions (Joel Muzzerall)
* Fixed:  BUILDR-144 Filter does not preserve file permissions
* Fixed:  BUILDR-163 cobertura-check
* Fixed:  BUILDR-203 Compiler guessing very inefficient
* Fixed:  BUILDR-225 ArchiveTask#merge, not according to doc
* Fixed:  BUILDR-256 Automatically installing gems aborts rspec test runner (Rhett Sutphin)
* Fixed:  BUILDR-285 Cobertura failing when running build
* Fixed:  BUILDR-302 Move out-of-date Nailgun documentation to wiki (Shane Witbeck)
* Fixed:  BUILDR-317 ecj compiler
* Fixed:  BUILDR-326 follow up: binary safe untarring on Windows (Sam Hendley)
* Fixed:  BUILDR-335 follow up: excluding libraries from war is confusing
* Fixed:  BUILDR-342 The jruby gem installer invokes the removed Gem.manage_gems function (Rhett Sutphin)
* Fixed:  BUILDR-403 Buildr::Util::Gems.install does not find gems on remote sources
* Fixed:  BUILDR-436 release task should only replace "-SNAPSHOT" (spec from Jean-Philippe Caruana)
* Fixed:  BUILDR-438 Release Task: customizable version numbers (Alexis Midon)
* Fixed:  BUILDR-464 Improve the versioning of Buildr (Rhett Sutphin)
* Fixed:  BUILDR-466 Rendering issue with IE on the website (Shane Witbeck)
* Fixed:  BUILDR-468 test:failed does not respect test.exclude
* Fixed:  BUILDR-469 test:failed causes all transitive tests to run
* Fixed:  BUILDR-472 ECJ dependency now required to build any java project
* Fixed:  BUILDR-477 Error while parsing maven-metadata.xml
* Fixed:  BUILDR-479 Enforce using a minimal version of jruby
* Fixed:  BUILDR-481 Antwrap monkey-patching in core.rb
* Fixed:  BUILDR-482 Javadoc : cannot load class java.com.sun.tools.javadoc.Main
* Fixed:  BUILDR-488 artifact poms not reinstalled
* Fixed:  BUILDR-491 sftp download goes into infinite loop
* Fixed:  BUILDR-498 Artifact download fails with "negative argument" if
          terminal capabilities are undefined
* Fixed:  BUILDR-499 Java package caching through constants
          e.g. (Java.java.lang.String cached as Java::Lang::String)
          can shadow Ruby modules
* Fixed:  BUILDR-501 Fix buildr label when listing tasks (Peter Donald)
* Fixed:  BUILDR-503 Include with as includes directories as files when the directory has the same name as the path
* Fixed:  BUILDR-506 Gem packaging does not work under windows (Peter Donald)
* Fixed:  BUILDR-508 Remove unnecessary use of Java.classpath in OpenJPA
          extension (Peter Donald)
* Fixed:  BUILDR-507 Gem packaging should replace dashes with dots in
          version number (Peter Donald)

1.4.1 (2010-07-07)
* Added:  BUILDR-420 Support external compiler
* Added:  BUILDR-425 Specify dev dependencies in .gemspec
* Change: BUILDR-459 Update gemspec to accept json_pure ~> 1.4.3
* Fixed:  BUILDR-455 cc_spec.rb l 160 depends on time and thus fails intermittently
* Fixed:  BUILDR-461 Packages with different ids collide
* Fixed:  BUILDR-439 "The command line is too long" when running TestNG tests
* Fixed:  BUILDR-463 Setting a system property in the buildfile causes a NoClassDefFoundError

1.4.0 (2010-06-18)
* Added:  BUILDR-405 Enhance the idea7x extension to supply a task to delete generated files
          (Peter Donald)
* Added:  Support for regexps in include and exclude patterns (BUILDR-406)
* Added:  Support for Scala 2.8 compiler-level change detection and dependency
          tracking
* Added:  Continuous compilation
* Added:  Generic documentation framework (using the `doc` task).  Replaces
          `javadoc` task
* Added:  New "test:failed" task to execute only tests that failed during last
          run (Antoine Toulme)
* Added:  Project extensions (before/after_define) now support dependency ordering
          similar to Rake (e.g. before_define(:my_setup => :compile)
* Added:  BUILDR-328 Detect Eclipse plugin project with META-INF/MANIFEST.MF
          and Bundle-SymbolicName: entry
* Added:  Support for Eclipse classpath variables to avoid absolute pathnames in
          generated .classpath using:
            eclipse.classpath_variables { :VAR => '/path/to/libraries' }
* Added:  Support for excluding libraries from Eclipse classpath using:
            eclipse.exclude_libs += ['/path/to/some/library.jar']
* Added:  Environment variable IGNORE_BUILDFILE can be set to "yes" or
          "true" to ignore changes in Buildfile when running tests.
* Added:  "buildr test=only" will only run tests explicitly specified on the
          command line (and ignore transitive test dependencies)
* Added:  ArtifactNamespace.{keys,clear} methods
* Added:  BUILDR-326 Support unzipping tar.gz files (Antoine Toulme)
* Added:  BUILDR-368 Support protocol buffer code generation
          (Pepijn Van Eeckhoudt)
* Added:  BUILDR-375 Buildr now recognizes buildfile.rb and Buildfile.rb
          (Kerry Wilson)
* Added:  BUILDR-390 Buildr::group() should accept :classifier argument
* Added:  BUILDR-407 Exclude and include patterns should support lambdas or procs
* Added:  BUILDR-408 Filter include() and exclude() should accept Rake tasks
* Added:  BUILDR-409 archive.include() should convert arguments to artifact
          if applicable
* Added:  BUILDR-453 Provide a ci task that uses the ci_reporter gem (Pepijn Van Eeckhoudt)
* Added:  ScalaTest now generates JUnit XML reports in addition to text files.
* Change: Updated to Ant 1.8.0
* Change: Updated to Cobertura 1.9.4.1
* Change: Updated to Groovy 1.7.1
* Change: Updated to JRuby 1.5.1
* Change: Updated to JtestR 0.5
* Change: Updated to JUnit 4.7
* Change: Updated to JMock 2.5.1 (Antoine Toulme)
* Change: Updated to RJB 1.2.5
* Change: Updated to Scala Specs 1.6.2.1
* Change: Updated to ScalaCheck 1.6
* Change: Updated to ScalaTest 1.0.1
* Change: Updated to json_pure 1.4.0
* Change: Load buildr.rb from $HOME/.buildr instead of $HOME
          ($HOME/buildr.rb is still loaded with deprecation warning)
* Change: BUILDR-400 Don't forbid projects to use their own compiler after one has been guessed
* Change: BUILDR-401 Don't set compiler to output warnings if verbose
* Change: Buildr.settings.build['scala.version'] now overrides SCALA_HOME to
          determine which Scala libraries used for compiling.  If both are
          are provided and reference the same Scala version, then local
          jars from SCALA_HOME are used.
* Change: Tagline changed from "The build system that doesn't suck" to "Build like you code"
* Change: BUILDR-355 Use Rake for defining tasks to do the Buildr distro over JRuby (Izzet Mustafa oglu)
* Change: BUILDR-448 Don't use sudo by default for rake setup
* Change: BUILDR-450 Update .gitignore to exclude idea project files and files generated during spec tests (Peter Donald)
* Fixed:  BUILDR-208 ansi control characters are printed on Windows (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-348 Buildr fails on windows with jruby and ODE 1.X
* Fixed:  BUILDR-183 Can't define root artifact namespace outside of project
          (Ittay Dror)
* Fixed:  BUILDR-223 Release Task: customizable commit message (Alexis Midon)
* Fixed:  BUILDR-232 buildr should print the class of an exception, not just
          its message (Antoine Toulme)
* Fixed:  BUILDR-233 Can't specify version in artifact namespace
* Fixed:  BUILDR-267 Skipping tests is only done after they are compiled
          (Antoine Toulme)
* Fixed:  BUILDR-281 Application#initialize fails if home dir isn't writable
* Fixed:  BUILDR-327 Specifying :plugin eclipse nature explicitly fails
* Fixed:  BUILDR-330  Install task should re-install artifact even if they
          already exist (Alexis Midon)
* Fixed:  BUILDR-334 Eclipse .classpath files use absolute paths for library
          entries (Stefan Wasilewski)
* Fixed:  BUILDR-336 Java::Commands.java Prints Command Without --trace
          (Antoine Toulme)
* Fixed:  BUILDR-341 jruby -S extract is no longer supported by jruby
          (Antoine Toulme)
* Fixed:  BUILDR-344 Buildr::TestFramework::TestResult::YamlFormatter uses
          deprecated form of example_pending (Rhett Sutphin)
* Fixed:  BUILDR-345 Improve project documentation (Peter Schröder)
* Fixed:  BUILDR-346 Test classpath can not be set (Peter Schröder)
* Fixed:  BUILDR-347 Compile.from does not work correctly with FileTask when
          no compiler is set (Peter Schröder)
* Fixed:  BUILDR-349 resources.filter should use defaults from profile.yaml
          even if mapping is provided
* Fixed:  BUILDR-360 Reintroduce tag_name instance method for Git release task for
          backward compatibility (Antoine Toulme)
* Fixed:  BUILDR-361 Generate Eclipse .project file even if project has no
          nature.  Also prevent generation of .project if project has
          children. (Antoine Toulme)
* Fixed:  BUILDR-364 Package spec should be set to a Symbol when :file is
          used (Klaas Prause)
* Fixed:  BUILDR-365 test task should use test compile dependencies
* Fixed:  BUILDR-366 Scala dependencies should be lazily loaded into
          Java.classpath
* Fixed:  BUILDR-373 Package type specific implementations of install,
          uninstall and upload are not invoked (Antoine Toulme)
* Fixed:  BUILDR-374 upload tasks can attempt to upload artifacts multiple times (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-379 Ant sql task abruptly terminates buildr
* Fixed:  BUILDR-380 GitRelease: recursive search for root '/' does not work
          under Windows (Antoine Toulme)
* Fixed:  BUILDR-381 JUnit tests on Groovy project fail with
          NoClassDefFoundError: junit/framework/TestCase
* Fixed:  BUILDR-382 Packages with default spec are not always created correctly
* Fixed:  BUILDR-383 artifact().from(task_dependency) should not trigger
          task_dependency if artifact exists
* Fixed:  BUILDR-384 Buildr fails with rubygems 1.3.6
* Fixed:  BUILDR-386 Display JRuby version in buildr -V (Antoine Toulme)
* Fixed:  BUILDR-388 Continuous Compilation Support for Sub-Projects
* Fixed:  BUILDR-391 resources task does not detect changes
* Fixed:  BUILDR-392 Array values not flattened in (one version) of eclipse
          task properties (Antoine Toulme, Peter Dettman)
* Fixed:  BUILDR-306 Cobertura extension does not handle dependencies
          correctly (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-398 FileUtils#sh does not work correctly on Windows
          (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-399 invoke_with_call_chain does not restore call chain
          correctly (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-418 jruby exception: `ffi_libraries': no library specified
* Fixed:  BUILDR-442 Errors while running the specs with jruby 1.5
* Fixed:  BUILDR-449 Fix failing specs on Windows (Pepijn Van Eeckhoudt)
* Fixed:  buildr test=all didn't run all tests as expected
* Fixed:  Fail-fast if package.with() or include() called with nil values
* Fixed:  Failures not reported correctly for ScalaTest (Alex Eagle)
* Fixed:  Test dependencies should include test compile dependencies
* Fixed:  Classpath correctly passed to Scala shell
* Fixed:  Removed redundant tracing of command arguments
* Fixed:  filter.using(hash) now correctly substitutes mappings with boolean
          "false" value
* Fixed:  BUILDR-404 buildr -V causes exception on JRuby
* Fixed:  BUILDR-411 fix for RDoc generation
* Fixed:  BUILDR-417 package_as_javadoc calls deprecated method
          (Pepijn Van Eeckhoudt)
* Fixed:  BUILDR-412 Gemspec dependencies don't add up - to the point it's not possible to release
* Fixed:  BUILDR-414 Provide tag_name method on GitRelease as part of API
* Fixed:  BUILDR-419 Exclusion patterns only work if they contain a wildcard
* Fixed:  BUILDR-421 The MANIFEST.MF file packaged by Buildr as permissions set to 600
* Fixed:  BUILDR-423 MANIFEST.MF files are not closed, leading to open files leak.
* Fixed:  BUILDR-447 Path object do not include empty dirs in base directory (Peter Donald)
* Fixed:  BUILDR-457 package(:jar) adds . entry to the jar

1.3.5 (2009-10-05)
* Added:  Interactive shell (REPL) support
* Added:  BeanShell as default shell for java projects, bsh is small and it's
          syntax provides the closest to an interpreted java. The BeanShell
          console includes a graphical class browser. Shell is named :bsh
* Added:  Mandriva (urpmi) installation support (with help from Franck Villaume).
* Added:  BUILDR-56 Download Scala artifacts if not available locally
* Added:  BUILDR-163 cobertura:check (Marko Sibakov, Daniel Spiewak).
* Added:  BUILDR-295 Eclipse task: make 'M2_REPO' repository variable configurable
* Added:  BUILDR-300 Make Eclipse task more configurable (Antoine Toulme, Alex Boisvert)
* Change: Upgraded to rubyforge-1.0.5 and net-ssh 2.0.15
* Change: Monkey-Patched FileUtils::sh on JRuby to use POSIX `system`
* Change: Updated to Rake 0.8.7, RSpec 1.2.8 and JRuby-openssl 0.5.2.
* Change: Updated to easyb 0.9 (Joel Muzzerall)
* Change: Updated to TestNG 5.10
* Change: Updated to JRuby 1.3.1
* Fixed:  BUILDR-23 Support for setting file mode when packaging (Ittay Dror).
* Fixed:  BUILDR-278 tasks/*.rake files are loaded after the buildfile (Rhett Sutphin)
* Fixed:  BUILDR-282 release goal should not strip leading '0' digits from version numbers.
* Fixed:  BUILDR-289 Improved error message when JAVA_HOME points to an invalid JRE/JDK installation
* Fixed:  BUILDR-290 Dependencies cannot be downloaded over SSL.
* Fixed:  BUILDR-291 Local tasks do not support arguments (Ittay Dror).
* Fixed:  BUILDR-292 Workaround for JRUBY-3381 on FileUtils.mv
* Fixed:  BUILDR-301 TestNG doesn't report failure if more than one test fails
* Fixed:  BUILDR-307 Failures are not reported correctly for ScalaTest (Jeremie Lenfant-Engelmann)
* Fixed:  BUILDR-313 Prevent release with uncommitted_files on Git 1.4.3+ (Alexis Midon)
* Fixed:  BUILDR-315 Fix Eclipse .classpath for local libraries (Mat Schaffer)
* Fixed:  BUILDR-304 Referencing an existing package task using the package
          method fails if the package has a custom filename (Rhett Sutphin)
* Fixed:  BUILDR-322 When specifying files (instead of directories) as sources for compile task,
          Buildr uses target directory timestamp only (not compiled output timestamp)
* Fixed:  BUILDR-324: Regression - baseDir system property is not set when executing tests [Alexis Midon]
* Fixed:  BUILDR-325: Overriding package spec with classifer doesn't work (Antoine Toulme)

1.3.4 (2009-04-21)
* Added:  BUILDR-93 Add specs for ScalaCheck integration
* Added:  BUILDR-94 Add specs for Scala Specs integration
* Added:  BUILDR-136 Support Scala/Java Joint Compiler (Daniel Spiewak).
* Added:  BUILDR-159 Improved 'check' to accept both tar and tgz archives.
* Added:  BUILDR-164 New 'artifacts:sources' task to download source code
          for artifact jars.
* Added:  BUILDR-222 Support Git as a version control system
* Added   BUILDR-223 Release Task: customizable commit message
* Added:  BUILDR-242 Include Scala-Tools Repository by Default.
* Added:  BUILDR-268 Allow proxying for https connections (Joel Muzzerall).
* Added:  Info message "Packaging filename.ext" now displayed for packaging tasks
* Added:  Added Scala.version and Scala.version_str
* Change: require 'buildr/scala' is now officially required to use Scala features
* Change: Introduced new options from Rake 0.8.3: -I (libdir), -R (rakelib),
          --rules, --no-search, --silent.
* Change: Upgraded to Rubyforge 1.0.1.
* Change: Upgraded to use Rake 0.8.4.
* Change: Upgraded to use Net-SSH 2.0.11.
* Change: Upgraded to use RSpec 1.2.2.
* Change: Upgraded to use JRuby 1.1.6 (when auto-installing).
* Change: Buildr, no longer in incubation (hurray!): new site, mailing list, SVN, Git.
* Change: BUILDR-171 Eclipse task generates meta-data files for projects with
          test source code but no main source code.
* Change: BUILDR-177 Moved cobertura and emma extensions to lib directory.
* Change: BUILDR-187 Source code attachment for Eclipse .classpath.
* Change: BUILDR-188 Source code attachment for IDEA .iml file (Marko Sibakov).
* Change: BUILDR-209 Scala Specs Should Use src/specs/scala/
* Change: BUILDR-237 Use MacPorts Scala on OS X.
* Change: BUILDR-260 Upgrade to Scala 2.7.3 compatible dependencies:
          ScalaSpecs 1.4.3, ScalaCheck 1.5 and ScalaTest 0.9.5
* Change: Buildr now uses Jekyll to generate Web site/documentation:
http://github.com/mojombo/jekyll/ This replaces Docter so less code to
maintain and the same Textile/Liquid mechanism as when using Github pages.
* Change: To access Release object (e.g. to set tag_name) use Release.find.
* Fixed:  Removed double complete/fail messages showing up on console.
* Fixed:  BUILDR-140 Get rid of const_defined? all across the board.
* Fixed:  BUILDR-158 Nailgun is now a delegate for buildr/drb (a pure-ruby dRuby server)
* Fixed:  BUILDR-170 ArtifactNamespace#method_missing has a condition that is never true.
* Fixed:  BUILDR-172 Scala compiler not loaded by default.
* Fixed:  BUILDR-175 Fail to find child project when calling project method inside project definition.
* Fixed:  BUILDR-185 Exception if using artifact names with hyphen (Joel
Muzzerall).
* Fixed:  BUILDR-192 TestNG report results are overwritten (Alexis Midon).
* Fixed:  BUILDR-193 TestNG uses project name for suite name (not valid file
          name on Windows).
* Fixed:  BUILDR-194 Buildr always adds 'Manifest-Version' to generated manifest file.
* Fixed:  BUILDR-198 Filter#run always calls mkpath with :verbose.
* Fixed:  BUILDR-199 ArchiveTask#needed uses 'each' with no effect (Ittay Dror).
* Fixed:  BUILDR-201 Sample project is not valid (Alexis Midon).
* Fixed:  BUILDR-214 Buildr is stuck uploading to sftp repository (Heikki Hulkko).
* Fixed:  BUILDR-216 Profiles documentation is wrong (Shane Witbeck).
* Fixed:  BUILDR-218 Manifest.from_zip fails if the zip doesn't already have
META-INF/MANIFEST.MF (Joel Muzzerall).
* Fixed:  BUILDR-226 Release task should use XML output of "svn info" instead
of human-readable output (Alexis Midon).
* Fixed:  BUILDR-230 release task fails if there's a space in the path to the
Buildfile.
* Fixed:  BUILDR-235 JRuby download link is broke (Alexis Midon).
* Fixed:  BUILDR-239 HTTP redirects lose authentication information (Joel
Muzzerall).
* Fixed:  BUILDR-240 Make TestNG print traces in the console (Alex Midon).
* Fixed:  BUILDR-241 IDEA7X IPR generation does not pay attention to base_dir
for submodules (Rhett Sutphin).
* Fixed:  BUILDR-247 OpenObject does not work with Hash#only (Rhett Sutphin).
* Fixed:  BUILDR-253 ZipTask now uses Zlib::DEFAULT_COMPRESSION instead of NO_COMPRESSION
* Fixed:  BUILDR-255 tasks/*.rake files are loaded more than once.
* Fixed:  BUILDR-261 ScalaSpecs should be run with Scala dependencies
* Fixed:  BUILDR-263 package(:war).merge not working correctly with exclude()
* Fixed:  BUILDR-271 Using buildr --environment leads to "Don't know how to
build task XXX".
* Fixed:  BUILDR-269 rspec bdd is broken (Jeff Hodges)
* Fixed:  BUILDR-272 'rake gem' does not build gem under JRuby (Clinton R.
Nixon).
* Remove: BUILDR-215 buildr:freeze and unfreeze tasks don't work since we're
no longer running with the rake command.

1.3.3 (2008-10-08)
* Added:  JtestR support. Implemented pending jtestr specs.
* Added:  Growl notifications (OS X only).
* Added:  error, info and trace methods.
* Added:  Release task support for alternative SVN repository layout
          (e.g., http://my.repo.org/trunk/foo).
* Added:  BUILDR-128 Emma support
* Added:  BUILDR-135. Extracted reusable replacement logic into Filter::Mapper
* Added:  BUILDR-148 It is now possible to set the version of various 3rd
          party libraries from the build.yml file.  Supported libraries
          include Ant and the various test and BDD frameworks.
* Change: Error reporting now shows 'buildr aborted!' (used to say rake),
          more of the stack trace without running --trace, and when running
          with supported terminal, error message is red.
* Change: Eclipse task updated to documented Scala plugin requirements
          (http://www.scala-lang.org/node/94)
* Change: Buildr.application.buildfile returns a task instead of a String.
* Change: BUILDR-104 Buildr::group has :under and :version, but not :type.
          Now it has :type too (Lacton).
* Change: BUILDR-139 Incremental test run.
* Change: BUILDR-141 Removed NEXT_VERSION from release task.
* Change: BUILDR-148 ant-junit no longer included in root classpath, but
          specified during taskdef.
* Change: BUILDR-153 To customize the SVN tag used by the release task, set
          Release.tag_name to either the tag value or a proc that takes the
          version number and return the desired tag.
* Fixed:  Should not display "(in `pwd`, development)" when using --quiet.
* Fixed:  Release task's regexp to find either THIS_VERSION and VERSION_NUMBER.
* Fixed:  BUILDR-106 download(artifact(...)=>url) broken in certain cases
          (Lacton).
* Fixed:  BUILDR-108 Trace to explain why a compile is done (Lacton).
* Fixed:  BUILDR-109 Failure of "Buildr::Filter should respond to :include and
          use these inclusion patterns" (Lacton).
* Fixed:  BUILDR-110 Error creating buildfile from POM when missing plugin
          configuration (Geoffrey Ruscoe).
* Fixed:  BUILDR-112 Using a user gem repository with 'rake setup' (Lacton).
* Fixed:  BUILDR-114 Hash.from_java_properties does not behave
          like java.util.Properties (Lacton).
* Fixed:  BUILDR-116: TestTask should include the main compile target in its
          dependencies, even when using non standard directories (Lacton).
* Fixed:  BUILDR-117 Shared directory for both code and resources produces
          duplicate Eclipse classpath entries (Nathan Hamblen)
* Fixed:  BUILDR-119 Eclipse task does not accept test resource folders
          (Lacton)
* Fixed:  BUILDR-122: eclipse task should not check for directory existence
* Fixed:  BUILDR-123: eclipse task should honor ResourceTask's target directory
* Fixed:  BUILDR-124 unzip(...).from_path does not work correctly without
          include (Rhett Sutphin).
* Fixed:  BUILDR-126  Tests options are shared between unrelated projects when
          using #options instead of #using (Lacton).
* Fixed:  BUILDR-129. Modifying a project manifest should not alter it's
          parent project manifest.
* Fixed:  BUILDR-137 JRuby 1.1.3 and Buildr 1.3.2 don't appear to work
          (on Windows).
* Fixed:  BUILDR-138 ScalaTest premature use of Buildr::Repositories
          inconsistent with customizing locations.
* Fixed:  BUILDR-152 Project.task fails when task name starts with a colon.
* Fixed:  BUILDR-157 Tasks library not loaded from a submodule.
* Docs:   BUILDR-111 Troubleshoot tip when Buildr's bin directory shows up in
          RUBYLIB (Geoffrey Ruscoe).

1.3.2 (2008-07-18)
* Added: --prereqs command line argument to show all tasks and their
dependencies. You can also follow with regular expression to narrow down the
list of tasks.
* Changed: Upgraded to Rubyforge 1.0.0.
* Changed: BUILDR-86 Use newest versions of net-ssh and net-sftp gems.
* Changed: BUILDR-88 Test classes/resources should come before compile
classes/resources so they load up earlier in java classpath.
* Changed: BUILDR-102 Update JUnit Version to 4.4.
* Fixed: BUILDR-73 idea7x task incorrect adds target/resources to the sources
paths.
* Fixed: BUILDR-76 Added more specs and fixes to compile task.
* Fixed: BUILDR-77 Layout feature not working.
* Fixed: BUILDR-79 Remove :source option for Scala compiler
* Fixed: BUILDR-80 Fix reference to Util#timestamp method on nailgun addon.
* Fixed: BUILDR-82 Temporary work around for Net::SSH 2.0.2 attempting to
load Pageant DLLs when running on JRuby/Windows.
* Fixed: BUILDR-89 JUnit (and all other Java frameworks) no longer include
abstract classes.
* Fixed: BUILDR-90 Installing from source doesn't work with JRuby.
* Fixed: BUILDR-91 When doing a release, buildr should spawn the same version
of buildr
* Fixed: BUILDR-92 IDEA 7x: add resources directories to classpath.
* Fixed: BUILDR-95: Only download Scala test framework artifacts when required
* Fixed: BUILDR-100 Directory structure documentation needs updating.
* Fixed: Installation instructions updated for RubyGems 1.2.0.

1.3.1.1 (2008-06-04)
* Fixed: BUILDR-78 Broken dependency on Rubyforge Gem.

1.3.1 (2008-05-19)
* Added: Downloading files from SFTP server, uploading to HTTP.
* Added: jibx_bind method to use JiBX for Java<=>XML binding (by David
Peterson).
* Changed: Upgraded to Net::SSH 2.0 and Net::SFTP 2.0.
* Fixed: BUILDR-67 HTTP GET now works with query parameters (Tommy Knowlton).
* Fixed: BUILDR-68 Now accepting JAVA_HOME setting on OS X (Nathan Hamblen).
* Fixed: JUnit now accepts java_args and passes these arguments to the JVM
(only applicable when forking).
* Fixed: BUILDR-70 JUnit not passing environment variables from the
:environment option.
* Fixed: BUILDR-75 Filter now runs if there's a target directory, even if
there are no source files to copy over, since everyone else just checks
resources.target for existence before depending on it.
* Fixed: BUILDR-63 Possible fix.

1.3.0 (2008-04-25)
* Added: Testing with EasyB (Nicolas Modrzyk).
* Added: Testing with JBehave (John Layton).
* Added: Testing with RSpec (Nick Sieger).
* Added: Nailgun integration for improved user experience when running on
JRuby.
* Added: Cobertura tasks can be invoked for a single project using project
name as prefix to cobetura tasks.
* Added: Cobertura can exclude specified classes from instrumentation.
* Added: ArchiveTask#clean can be used to remove content from a package.
* Added: Groovy compiler.
* Added: Mechanism to simplify creating extensions (see Extension module).
* Added: To run all test cases 'rake spec'.  Test coverage reports will show
up in html/coverage.  To run failing tests against, 'rake failing'.
* Added: Layout class for controlling the project layout.  Also cleaned up
places where paths were used instead of path names.
* Added: HTTP Basic authentication support (Yuen-Chi Lian).
* Added: EAR packaging (Victor Hugo Borja).
* Added: Profiles(.yaml), based on the code provided by Yanko Ivanov.
* Added: Resources task picks the default mapping from the filter element of
the current profile (if specified).
* Added: Consolidated API for RJB and JRuby, replacing the now deprecated
JavaWrapper.
* Added: JRuby 1.1 support (Victor Hugo Borja, Nick Sieger).
* Added: IDEA 7 task: use buildr idea7x (Shane Witbeck).
* Added: Experimental support for installing/loading Gems as part of a build.
* Added: Experimental support for YAML configurtion files:
~/.buildr/settings.yaml, build.yaml and profiles.yaml.
* Added: Ability to create a package that is not an artifact and specify the
target file using the :file argument.
* Changed: JUnit/TestNG test cases are selected by superClass or annotations,
not by class-name pattern.
* Changed: Upgraded to Antwrap 0.7.0, thanks to Caleb Powell for relicensing
under Apache License.
* Changed: Upgraded to Rake 0.8, RSpec 1.1, RJB 1.1, OpenJPA 1.0.1.
* Changed: Resources are now copied to target/resources instead of
target/classes, and target/test/resources instead of target/test-resources.
* Changed: Test cases are now compiled into target/test/classes instead of
target/test-classes.
* Changed: Compile extension and CompileTask are now separate from the Java
module.  Multiple compilers can be used, either guessed from the project
layout, or specified with compile.using(:name).
* Changed: Test extension and TestTask are now separate from the Java module.
JUnit and TestNG are Java specific extensions picked using test.with(:name).
* Changed: For compile and test, use dependencies instead of classpath (with
works are before).
* Changed: Test framework componentized along the same lines as the
compilers.
* Changed: The way packaging is handled: package_as_[type] is now called once
for a given package with the exact file name.  If packaging requires a change
to the specifiction (e.g. a different file type than the package type), add a
package_as_[type]_spec method.
* Changed: The default packaging type is inferred from the compiler, and
without a compiler, defaults to :zip.
* Changed: JUnit test framework now runs on all classes that extend
junit.framework.TestCase.
* Changed: Scalac compiler now used by the regular compile task, the scalac
task is deprecated.
* Changed: RDoc are now generated using Allison
(http://blog.evanweaver.com/files/doc/fauna/allison).
* Changed: Resource tasks no longer generate target directory if there are no
resources to copy over.
* Changed: To prevent collissions with required files, the source layout now
places everything under lib/buildr, so require 'core/compile' is now require
'buildr/core/compile'.
* Changed: The various Java tasks (JavaCC, XMLBeans, JDepends, etc) are now
located in the extra directory, and may at some point relocate to an addon
Gem.
* Removed: Prepare tasks removed.
* Removed: All deprecated features since 1.1.  If you've seen warnings before,
except the build to break.
* Removed: No longer using Facets or recommending you use it in buildfiles.
* Fixed: More typos/documentation fixes by Lacton
* Fixed: Artifact.pom resolves artifact without classifier, i.e
org.testng:testng:jar:jdk15:5.1 uses org.testng:testng:pom:5.1 (Tommy).
* Fixed: More patches towards JRuby support, courtesy of Vic Borja.
* Fixed: Error when downloading a file from a server which answers with a
response with no content length.
* Fixed: Improved the Eclipse task (BUILDR-17): removed resources target
directory from the source directories, made the main resource directories
relative to the project directory and reordered project elements (Thomas
Marek).
* Fixed: When compiling Scala only include scala-library and scala-compiler
JARs (John Layton).
* Fixed: POM generation now applies JAR as default packaging if unspecified
(Maarten Billemont).

1.2.10 (2007-11-26)
* Changed: Resources sets permission on copied files to make them
read/write-able (Shane Witbeck).
* Changed: Artifact download no longer generates destination directory if not
downloaded (Antoine).
* Fixed: EOL in MANIFEST.MF.
* Fixed: Bunch of typos, courtesy of Merlyn Albery-Speyer and Soemirno
Kartosoewito.

1.2.9 (2007-11-08)
* Changed: Upgraded to RJB 1.0.11.
* Fixed: Backward compatibility in Java.rjb/wrapper.

1.2.8 (2007-11-01)
* Added: Resolving Maven snapshots from remote repository (Rhett Sutphin)
* Changed: scala options.target now takes number, e.g. "1.5" instead of
"jvm-1.5" (Nathan Hamblen)
* Changed: Eclipse task uses updated Scala plugin nature and builder (Alex
Boisvert)
* Fixed: Bringing Buildr back to 1.0.9, XMLBeans fix.

1.2.7 (2007-10-29)
* Added: You can create an artifact from a given file using
artifact(<spec>).from(<path>).  You can then install it into the local
repository or upload it to the release server using install(<artifacts>) and
upload(<artifacts>). (Idea: Shane Witbeck and Tommy Mason).
* Added: ANTLR support.
* Changed: Speed boost to ZIP packaging.
* Changed: RjbWrapper is now JavaWrapper, and revised to nicely support JRuby.
A few other minor tweaks to make JRuby support possible in the future. (Travis
Tilley)
* Changed: JUnit now runs tests with clonevm false by default, you can change
with test.using :clonevm=>true (Karel)
* Changed: JUnit now switches over to project's base directory.
* Changed: package(:war).with(:libs, :classes) uses only these specified libs
and class directories, replacing any previous value.
* Fixed: Jetty task no longer sets "log4j.configuration" system property
* Fixed: release task didn't work

1.2.6 (2007-09-26)
* Added: Option for setting environment name (-e) and attribute accessor
(Buildr.environment).  Default taken from BUILDR_ENV environment variable.
* Added: AAR packaging for Axis2 service archives (Alex Boisvert)
* Added: Environment variable for JUnit tests (test.using :environment=>).
* Added: tar method similar to zip method.
* Added: Experimental transitive method.  Looks like artifacts, quacks like
artifacts, but returns artifacts by the boat load. (Credit, Daniel Roop)
* Changed: Now accepting JAVA_OPTS in addition to JAVA_OPTIONS.
* Changed: TarTask is now based on ArchiveTask, same API as ZipTask.
* Changed: Javadoc array arguments now passed as multiple command line options
(e.g. :link=>['foo', 'bar'] becomes --link foo --link bar). (Daniel Roop)
* Changed: Jetty task now uses SLF4J instead of commons-logging + log4j for
better hot-swap capability and plugability (Alex Boisvert)
* Removed: Turns out --verbose command line option is useless.  Removed.
* Fixed: Jetty task now uses WebAppContextClassLoader to support hot-swapping
webapps (Alex Boisvert)
* Fixed: "release" task now works with SVN URLs ending with /branches/*/ (Alex
Boisvert)
* Fixed: Resources not included in JAR/WAR unless there's a src/main/java
directory (Olexandr Zakordonskyy).
* Fixed: Files starting with dot (e.g. .config) not copied over as resource
files, and not included in ZIP (Olexandr Zakordonskyy).
* Fixed: Empty directories not copied over as resources (Olexandr
Zakordonskyy).
* Fixed: JAVA_OPTS and test.options[:java_args] not passed to JUnit task
(Staube).
* Fixed: archive.exclude doesn't work when including a directory using
:from/:as option.
* Fixed: JUnit/TestNG no longer run inner classes as test classes (Mark
Feeney).

1.2.5 (2007-08-13)
* Fixed: Buildr not finding buildfile in parent directory, or switching to
parent directory.
* Fixed: checks.rb:103: warning: multiple values for a block parameter (2 for
1)
* Fixed: ZIPs include empty META-INF directory.

1.2.4 (2007-08-03)
* Added: Forking option for JUnit test framework: :once to fork for each
project, :each to fork for each test case, and false to not fork. (Tammo van
Lessen)
* Added: Path traversal in Zip, so zip.path("foo/bar").path("..") returns
zip.path("foo").
* Fixed: JUnit test framework output shows errors in console, more readable
when forking is on (Tammo van Lessen).
* Fixed: Cobertura reports not working (Anatol Pomozov).
* Fixed: Zip creates funky directory name when using :as (Tommy Mason).
* Fixed: package_as_tar incorrectly calling with(options) (Tommy Mason).
* Fixed: Loading of everything which should get rid of "already initialized
constant VERSION" warning.
* Fixed: --requires option now works properly when using buildr.
* Fixed: MANIFEST.MF lines must not be longer than 72 characters (Tommy
Mason).
* Fixed: Creating manifest from array does not place Name first.
* Fixed: Complain if no remote repositories defined, add at least one
repository when creating from POM, POM reader fails if dependencyManagement
missing (Jean-Baptiste Quenot).
* Fixed: Not looking for buildfile in parent directory.
* Fixed: Project's compile/test task looking for options in local task of same
name.
* Fixed: ZIP/JAR/WAR include directory entries in some cases and not others.
* Fixed: Computation of relative paths in Eclipse project generation (Cameron
Pope)

1.2.3 (2007-07-26)
* Added: Get your buildfile created form existing POM, just run buildr on
existing Maven project (Anatol Pomozov).
* Added: package(:tar), package(:tgz), TarballTask dn TarTask (Tommy
Knowlton).
* Changed: The ArchiveTask needs no introduction: it's a base task that
provides common functionality for ZipTask, TarTask and friends.
* Fixed: Release runs buildr instead of buildr.cmd on Windows (Chris Power).
* Fixed: Cobertura reports broken (Anatol Pomozov).

1.2.2 (2007-07-18)
* Added: resources.using and filter.using now accepts a format as the first
argument, default being :maven, but you can also use :ant, :ruby or pass a
regular expression
(http://groups.google.com/group/buildr-talk/browse_thread/thread/5216d5ae8bfff29b).
* Fixed: Sleek upload with changelog for each release courtesy of Anatol
Pomozov.
* Fixed: Zip.path.contains fails on paths with more than one directory
(http://groups.google.com/group/buildr-talk/browse_thread/thread/5d305bbeeb814d1).
* Fixed: Speed of sorting entries when creating new Zip file
(http://groups.google.com/group/buildr-talk/browse_thread/thread/8b4d1b0e983f32f).
* Fixed: Uploading using SFTP creates directory for uploaded file
(http://groups.google.com/group/buildr-talk/browse_thread/thread/80021d35cecfecdc).

1.2.1 (2007-07-12)
* Added: Proxy exclusion, use environment variable NO_PROXY, or
options.proxy.exclude = <url> || [<url>]
(http://groups.google.com/group/buildr-talk/t/9f1e988e0dbeea9f).
* Added: You can now copy resources from multiple source directories, using
resources.from
(http://groups.google.com/group/buildr-talk/browse_thread/thread/4f2867a6dbbc19d4).
* Added: Hash.from_java_properties(string) and hash.to_java_properties.
* Changed: Buildr.options now wrap various environment variables instead of
duplicating them (HTTP_PROXY, NO_PROXY, TEST, DEBUG).
* Changed: No longer passing proxies to transports, instead they obtain them
from environment variables.
* Changed: Buildr now uses XJavaDoc 1.1 instead of 1.1-j5. If you need the
1.1-j5 fix, see here
http://groups.google.com/group/buildr-talk/browse_thread/thread/49f3226810466c94/1f0d25d002433fe2.
* Fixed: One RubyForge release for all packages, instead of one per package
(Anatol Pomozov).
* Fixed: buildr command does not recognize project tasks (foo:compile) or
default task (http://groups.google.com/group/buildr-talk/t/660061a0bc81989a).
* Fixed: Upload fails on SFTP permissions.
* Fixed: Hibernate.schema_export not passing Ant task when yielding.
* Fixed: IntelliJ Idea project files generation for projects more than two
degrees deep.

1.2.0 (2007-06-06)
* Added: Artifact.list returns specs for all registered artifacts (those
created with artifact or package).
* Added: Buildr.option.java_args are used when creating the RJB JVM, when
running a Java process (unless you override directly), and when running JUnit
tests (again, unless override).
* Added: TestNG support (test.using :testng).
* Added: You can run multiple tests from the command line, e.g. rake
test:foo,bar.
* Added: If you want to distribute source code and JavaDoc alongside your JARs
(helpful when using IDE/debugging), you can now do so by calling
package_with_sources and package_with_javadoc on the project (or the parent
project to affect all its sub-projects).
* Added: junit:report task generates XML and HTML reports in the reports/junit
directory.
* Added: test=all option runs all test cases ignoring failure.
* Added: project generation for IntelliJ Idea. Imports dependencies properly
from your local repository (the M2_REPO path variable must be defined),
supports tests and resources.
* Added: A check task for each project that runs after packaging and can be
used to check the build itself, using RSpec matchers.
* Added: The help task can be used to get basic information about your build.
Right now it returns a list of described tasks, but you can extend it using
the help method. Try it out: rake help.
* Added: Integration tests that run after packaging (unless tests are
disabled). There's only one integration tests task (duh) that you can access
from anywhere. You can tell a project to run its tests during the integration
phase with test.using :integration.
* Added: package :sources and package :javadoc, used by package_with_sources
and package_with_javadoc.
* Added: Unzip paths now return root/target. (Nathan)
* Added: buildr command line, replacing rake. Differs from rake in two ways:
uses buildfile by default (but Rakefile also works) and offers to create
buildfile if you don't already have one.
* Added: options.proxy.http now set from the environment variable HTTP_PROXY
(Anatol Pomozov).
* Added: options.java_args now set from environment variable JAVA_OPTIONS.
* Changed: Filter now complains if source directory or target directory not
set, or if source directory does not exist.
* Changed: Filter.run returns true if filter run, false otherwise, and can be
run multiple times.
* Changed: repositories.proxy returns a URI or nil; you can still set a proxy
using a hash.
* Changed: Transports went the way of the Dodo, instead we now use
read/write/download/upload methods implemented on URI itself.
* Changed: We now have a way to configure multiple proxies through the
options.proxy method; use that instead of repositories.proxies.
* Changed: Upgraded to Ant 1.7.0, JUnit 4.3, JMock 1.2.
* Changed: TestTask now provides list of test classes and failed classes
through test_classes and failed_tests attributes.
* Changed: The jetty method is now available everywhere, so you can change the
URL using jetty.url = at the top of the Rakefile. Also upgraded to 6.1.3.
* Changed: Test classes are now identified as either starting with Test* or
ending with *Test, before attempting any include/exclude patterns. Anything
ending with *TestCase or *Suite ignored for now (but if you explain why, we
can add it back).
* Changed: What used to be the projects task is now help:projects task,
anticipating more help: tasks to come.
* Changed: We now have 3(!) JDepend tasks: jdepend:swing (with windows!),
jdepend:text (console) and jdepend:xml (enterprisy).
* Changed: Good news for packagers: package_as_ yield no longer required, just
make sure to create the task once and return it each time.
* Changed: JUnit tests now run using Ant, which makes them faster to run, and
gives you text/XML reports (check out the reports/junit directory).
* Changed: Cobertura now writes reports to reports/cobertura, in fact, if
you're looking for a report of any kind, the reports directory is the place to
find it.
* Changed: Upgraded to AntWrap 0.6. Note that with AntWrap 0.6 we yield to the
block instead of doing instance_eval, so any call to the ant project must be
prefixed with an AntProject object. Code that relies on the old functionality
(and that's pretty much any code with element-containing tasks) will break.
* Changed: artifacts now accepts a struct.
* Changed: The repositories.download method folded into Artifact, the
repositories.deploy method renamed upload and folded into ActsAsArtifact.
* Changed: The deploy task is now called upload, and repositories.deploy_to is
now repositories.release_to.
* Removed: The check task, which previously was a way to find some circular
dependencies (multitask) but not others (dynamically defined).
* Removed: JUnitTask, test.junit and Java.junit methods all deprecated;
anything you need to affect the unit tests is right there in TestTask.
* Removed: The package(:jar) and package(:war) options, such as :manifest,
:include, :libs are all deprecated. Instead, use the package method to define
the package, and the with method to enhance it, e.g.
package(:war).with(:libs=>...) instead of package(:war, :libs=>...).
* Removed: The []= method on ZipTask and anything derived from it is
deprecated in favor of using attribute accessors.
* Removed: Ant.executable and Ant.declarative are deprecated. Use Buildr.ant
instead of Ant.executable. Use AntWrap directly if you need the
Ant.declarative functionality.
* Fixed: Filter now properly handles multiple keys on the same line.
* Fixed: Tests teardown now properly executing.
* Fixed: Cobertura tasks now run tests, even if test=no.
* Fixed: XMLBeans compile task not detecting change to XSD file.
* Fixed: URI.download and download task do not create directory path for
downloaded file (Anders Bengtsson).
* Fixed: Gets JVM version number from system property java.version instead of
calling java -version.
* Fixed: Artifact downloads POM first, such that you can download/create/fake
it youself.

1.1.3 (2007-06-12)
* Added: Long awaited idea project files generation. Very early code, the iml
seems to be generated okay but needs testing. The ipr is still missing but
will come in due time (and it's not always necessary anyway).
*Fixed: Doc bug: unzip doesn't have an into(dir) method.
*Fixed: File names don't always have a dot.
*Fixed: For Jetty servers, http://foo//bar is not http://foo/bar

1.1.2 (2007-05-29)
* Added: Allow passing :java_args option to the junit task
* Added: Hibernate XDoclet and SchemaExport tasks. (Requires buildr/hibernate)
* Added: JDepend UI for seeing depenencies across all projects. (Requires
buildr/jdepend)
* Added: Cobertura test coverage tasks, reporting both html and xml. (Requires
buildr/cobertura)
* Changed: tools_jar now returns empty array on OS X, part of the ongoing
Write Once/Test Everywere effort. (Credit Paul Brown)
* Fixed: Work around keep_alive bug in Net::HTTP.
(http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/10818)

1.1.1 (2007-05-16)
* Changed: Test case class names must end with Test, TestCase, Suite or
TestSuite.
* Changed: You can now run rake test:{foo,bar} to match against either foo or
bar (requires \{..\} on UNIX).
* Changed: JAVA_HOME now required on all platforms, along with more OS X
fixes. (Credit Paul Brown)
* Fixed: You can now run rake test:<name> from any directory, and it will find
just the right test cases.

1.1.0 (2007-05-13)
* Added: Proxy setting for downloading from remote repositories (use
repositories.proxy = ...).
* Added: projects task to list all the projects you can build.
* Added: Project attribute target to specify the target directory.
* Changed: The project and projects methods now accepts relative names when
called on a project. For example, project("foo").project("bar") finds the
sub-project "bar" in "foo".
* Changed: The project method now returns self if called on a method with no
name.
* Changed: The -warning flag (javac) is now set to true only when verbose.
* Changed: OpenJPA mapping now using Ant task instead of spawning another Java
instance.
* Changed: The test:name pattern translates to *name* so you can run tests by
package name, but only if you don't use * in the pattern.
* Changed: All projects are not evaluated when referenced (i.e. calling
project/projects) or before running any task. Project tasks do not exist until
a projet is evaluated.
* Removed: The projects method no longer accepts the :in argument, call
projects on a project instead.
* Fixed: Local directory tasks now work from any directory in the project.
* Fixed: Artifacts no longer created with timestamp from server.
* Fixed: Buildr no longer fails when run without tools.jar or JAVA_HOME
(OS X). (Credit Lyle Johnson)
* Fixed: Manifest gets EOL to keep EOF company. (Credit Tommy Knowlton)
* Fixed: Compile tasks clean after themselves when target directory changed.
(Credit Lyle Johnson)

1.0.0 (2007-05-04)
* Added: buildr:freeze and buildr:unfreeze task. These set the Rakefile to use
a particular version of Buildr, freezing by setting to the current version of
Buildr, unfreeze to use the latest Gem.
* Added: Buildr.options, with three options to start with: test, debug and
parallel.
* Added: Buildr.option.debug or environment variable DEBUG to control the
compiler debug option. Defaults to yes, except when doing a release.
* Changed: Buildr now fails nicely if JAVA_HOME not set.
* Changed: Migrated test cases to RSpec 0.9.
* Changed: Extended circular dependency check to multitask.
* Changed: JavaCC using RJB.
* Changed: OpenJPA 0.9.7 no longer snapshoted.
* Fixed: For Windows users: user's home directory, fu_check_options is now
rake_check_options, java command works around funky system bbug.

0.22 (2007-04-26)
* Added: Calling projects(:in=>foo) returns only the sub-projects defined in
foo.
* Added: _() as shortcut for path_to().
* Added: You can pass properties to java by setting the :properties options.
* Added: JUnit task has a way of setting options (options accessor and using
method), which for now supports passing properties to java.
* Added: You can now use the struct method to create a Struct for structoring
your multiple artifacts.
* Changed: Use rake artifacts to download all artifacts not already in the
local repository, and also download modified artifacts
(*cough*snapshots*cough*)
* Changed: Transport.download now uses timestamp on the destination file and
If-Modified-Since header to skip downloads of unmodified files.
* Changed: Downloading artifact sets the time stamp from the repository.
* Changed: Use buildr.rake in the project's directory and your home directory,
instead of buildr.rb.
* Changed: filter method accepts one argument, the source directory. Use
filter(src).into(target).
* Changed: Running Javac/Apt/Javadoc in process.
* Changed: Using Ant for OpenJPA enhancer and XMLBeans schema compiler.
* Changed: Jetty, JavaCC, OpenJPA and XMLBeans are no longer included by
default. You need to require them explicitly, e.g. require "buildr/jetty".
* Removed: Tasks no longer use a base directory, always map paths directly
using file, path_to or _().
* Fixed: The artifacts task no longer downloads POMs for artifacts created by
the Rakefile.

0.21 (2007-04-20)
* Added: Methods to read and write a file (shortcut for
File.read/File.open.write).
* Changed: Filter task now takes a source directory and target directory, and
copies all included (sans excluded) files between the two.
* Changed: Artifact type is now symbol instead of string (so :jar instead of
"jar"). You can still specify a string, but the return value from #to_spec or
#type is a symbol.
* Changed: Eclipse task now adds "src/main/resources", "src/test/java",
"src/test/resources" to build path, and excludes ".svn" and "CVS" directories
from being copied into target directories.
* Changed: The test task will now run JUnit test cases from classes ending
with Test or Suite. And the inclusion pattern is always set.
* Fixed: Project property not inherited if false.

0.20 (2007-04-18)
* Added: JavadocTask to generate Javadoc documentation for the project,
javadoc method on the project itself to return its javadoc task, and
Java.javadoc to do all the heavy lifting.
* Changed: Release code is now implemented as module instead of class. SVN
copy made from working copy instead of double commit.
* Removed: package :file_name options. Does not work with deployed artifacts
or POMs.
* Fixed: Packages not deployed in the right path (but POMs are).
* Fixed: JARs and WARs include redundant META-INF directory.
* Fixed: The local package task is now a dependency for install/deploy, and
build is dependency for package.

0.19 (2007-04-13)
* Fixed: Eclipse task correctly handles FileTasks
* Fixed: Eclipse task output directory is "target/classes"
(Project.compile.target) instead of "/target"
* Added: Set specific file permissions when uploading with SFTP transport with
:permission option
* Fixed: Correctly use JAVA_HOME environment variable, if available, for
determining java version
* Added: ConcatTask and concat: a file task that creates or updates the target
file by concatenating all the file prerequisites.
* Added: Ant module (requires antwrap and rjb Gems), so also added RJB setup
module.
* Added: When zipping you can include the contents of a directory using
:as=>".".
* Added: Convenience apt method returns a file task that generates sources
using APT.
* Added: Convenience open_jpa_enhance method to enhance compiled files.
* Added: Convenience compile_xml_beans setups the compiler to include
XSD-generated XML Beans.
* Added: Convenience javacc/jjtraa methods return file tasks that generate
source files.
* Added: build is now the default task.
* Added: jetty:start and jetty:stop tasks to start/stop the server from the
console.
* Added: jetty:use to start Jetty inside the build or hook to an existing
server.
* Added: jetty:setup and jetty:teardown to perform tasks around jetty:use.
* Added: The local build task will now execute the local test task. So
building a project (or sub-project) will run the test cases on that project
(or sub-project) but not any of its dependencies.
* Added: ZipTask accepts nested path (i.e. calling path inside a path).
* Added: package(:war) by defaults picks libraries from the compiler
classpath. You can always override by passing the :libs option.
* Changed: Eclipse task now generates library path with M2_REPO variable or
project-relative paths where appropriate
* Changed: compile.target (CompileTask) and resources.target (Filter) are now
file tasks, not strings.  So passing the target to someone else will hopefully
convience them to invoke or enhance it.
* Changed: Java related tasks like OpenJPA, XMLBeans, JavaCC all moved to the
Buildr::Java module.
* Changed: Handling of package_as arguments to support JBI packaging.
* Changed: meta_inf project property is an array accepting filenames (strings)
and file tasks.
* Changed: meta_info by default only includes the LICENSE file from the
top-level project.
* Changed: The WarTask :classes argument is now a directory name, and will
include all files in this directory.
* Changed: WarTask and JarTask accept meta_inf argument.
* Changed: Behavior of needed? and prerequsities in base Rake::Task. This will
probably not affect you, but don't be surprised if it disappears (see
lib/core/rake_ext.rb for details).
* Changed: Were previous the test task would link to test.run, it now executes
the entire test lifecycle, and is the major point for extending the test
lifecycle.
* Changed: test.run is now test.junit.
* Changed: Ant.define is now Ant.declarative, Ant.execute is now
Ant.executable.
* Changed: The filter method now returns a Filter class that can be used to
set a filter, but is not itself a task. Instead, it creates a task when
setting its target.
* Changed: Project.resources now returns a ResourceTask that includes, but is
not itself a filter, accessed using the accessor filter.
* Changed: UnzipTask eliminated and replaced with Unzip which you now have to
run directly by calling extract.  However, unzip method creates a file task
and returns an Unzip object that can be used as a reference to that file
task.
* Changed: Attributes is now InheritedAttributes.
* Changed: The first call to package configures the package task from the
options, the second call only returns the package task.
* Removed: :cp argument, always use :classpath.
* Removed: src_dir, java_src_dir, target_dir, webapp_src_dir and all other
premature configuration attributes.
* Removed: Project tests method deprecated in favor of a single test method;
it now accepts an enhancement block, not an instance_eval block.
* Removed: FilterTask is dead.
* Removed: sub_projects method. Is anyone using this?
* Fixed: Local buildr.rb not loaded from running from inside a sub-project
directory.
* Fixed: Eclipse task now executed whenever a change is made in the Rakefile,
or any file it requires, include buildr.rb and task files.
* Fixed: Circular dependency in release task.

0.18 (2007-03-26)
* Added: manifest attribute on project, used by default when packaging
JAR/WAR.
* Added: default manifest includes build-by, build-jdk and
implementation-title.
* Added: compile.from(sources) in the same vein as compile.with(classpath)
* Added: load all *.rake files form the tasks directory (if exists) for use
in
the main Rakefile.
* Added: Java.tools returns a reference to tools.jar on JDKs that include it.
* Added: brought back experimental test tasks.
* Added: artifacts task to download all artifacts referenced by project (using
either artifact or artifacts method).
* Changed: back to old behavior, compile task only executes if there are any
files to compile, and compile? method removed.
* Changed: repositories.remote is now an array instead of a hash, and
repositories are searched in the order in which they appear.
* Changed: release task is now a regular task, using the Release object
instead of being a ReleaseTask.
* Changed: eclipse task executes artifacts task.
* Fixed: inherited attributes now cache default value, useful when working
with arrays/hashes.
* Fixed: manifest file generated even if manifest attribute is false.
* Fixed: compile task now properly detects when not all files compiled.
* Fixed: bug that caused project file tasks to execute twice.

0.17 (2007-03-14)
* Added: project.task acts like Rake's task but can also fetch a task from a
project using the project's namespace.
* Added: project.file acts like Rake's file but resolve relative paths based
on the project base directory.
* Added: Rake tasks execute in the directory in which they were defined.
* Added: enhanced Rake with circular dependency, and you can find all circular
dependencies by running rake check.
* Added: enhanced Rake in_namespace, if the namespace starts with colon,
creates a namespace relative to the root instead of the current namespace.
* Changed: a project definition is now a task definition.
* Changed: use enhance to extend the project definition instead of
after_define.
* Changed: LocalDirectoryTask replaced with Project.local_task.
* Changed: projects method accepts multiple names, returning only these
project definitions, returns all of them with no arguments.
* Changed: packge only defines the essentials once, so you can call package on
a project to retrieve a specific package by type/id.
* Changed: zip task (and jar/war) no longer resolve artifacts for you, must
call artifacts directly.
* Changed: cannot access a project before it's defined, but can do that with
sub-projects to establish dependencies.

0.16 (2007-03-07)
* Added: zip.include :as=> to include file under specified name.
* Added: zip.merge to include the (expanded) contents of one zip file in
another.
* Added: experimental test task using JUnit and JMock.
* Changed: project.to_s returns name, projects returns sorted by name.
* Changed: project definition now executed using project's base directory as
the current directory.
* Fixed: artifact test cases and minor code cleanup.
* Fixed: attempts to download artifact even if created by task.
* Fixed: release task now deletes old tagged copy and reports SVN usage.
* Fixed: OpenJPA not including target directory in classpath.

0.15 (2007-02-28)
* Fixed: tasks fail unless deployment server specified.
* Changed: deploy method executes deployment, instead of returning a task.

0.14 (2007-02-28)
* Added: check task that looks for obvious errors in the Rakefile.
* Added: deploy task for managing deployment.
* Added: release task that updates version numbers, commits and tags SVN.
* Changed: the project name is now the fully qualified name, e.g. ode:axis2
* Changed: you can now lookup a project before it's defined; you still can
only define a project once.
* Changed: you can lookup projects by full qualified name.
* Changed: release_to changed to deploy_to, which is now a getter/setter.
* Fixed: removed Java.home which conflicted with JRuby.
* Fixed: install task did not re-install modified files.
* Fixed: deploying only uploads one artifact.
* Fixed: timing issues.
* Fixed: Maven classifier now used properly.

0.13 (2007-02-26)
* Added: global java method.
* Added: project build method.
* Added: OpenJPA mapping_tool method.
* Added: Rakefile to generate Gem.
* Changed: you can now lookup a sub-project from the top project method.
* Changed: the projects methods return all sub-projects.
* Fixed: bug in JarTask that resolved artifacts too early.
* Fixed: global tasks (clean, build, etc) now complain if executed from a
directory that does not map to any project.
* Fixed: to work with Rake 0.7.2.

0.12 (2007-02-24)
* Added: call prepare with list of tasks to add them as prerequisites.
* Added: project.id returns the compound name, e.g. foo, foo-bar,
foo-bar-baz.
* Added: JavaCC, XMLBeans schema compiler, OpenJPA enhancer, APT tasks.
* Changed: the default package ID is take from the project ID instead of its
name.
* Changed: renamed buildr and moved here.
* Changed: moved all code into Buildr module.
* Fixed: download breaking when POM not found.
* Fixed: compile task fails if classpath is empty.
* Fixed: zip task fails if target directory does not exist.
* Fixed: packaging task does not require build.
* Fixed: compiler not showing command when trace is on.
* Fixed: zip dependencies were all fucked up.
* Fixed: package should not depend on build.

0.11 (2007-02-16)
* Added: test cases for unzip task
* Added: prepare method to access prepare task
* Added: prepare, compile and resources accept a block you can use to enhance
the task
* Changed: ZipTask executes all includes files as prerequisites, and now
includes directories correctly
* Changed: Jar/WarTask are now extended using with(options) method
* Changed: JarTask now accepts array of sections (each being a hash) for the
manifest, and a proc/method to generate it
* Changed: added HighLine to hide password entry on the command line
* Changed: unzip now using UnzipTask with its own shorthand syntax.
* Changed: filter task gets a consistent syntax to unzip

0.10 (2007-02-13)
* Added: modifier for artifacts
* Added: ZipTask, WarTask
* Added: get POM artifact directly from artifact
* Changed: JAR and WAR packaging based on new and improved Zip task
* Changed: options for packaging, but not affecting current Rakefile
* Remove: delete task

0.9 (2007-02-09)
* Added: attributes for configuring compile (sources, classpath, target,
options)
* Added: shorthand notation for specifying compilation (to, with, using)
* Changed: copy task is dead (name conflict), instead we get the better filter
task with include/exclude patterns
* Changed: rewrite of compile task, now better than ever
* Changed: compile can be used inside and outside project
* Changed: compiler no longer infers anything from its prerequisites
* Changed: compiler accepts files, artifacts and tasks on the classpath
* Changed: resources task now working as expected
* Remove: global task artifacts was the root of all evil and got canned.

0.8 (2007-02-05)
* Added: release task and release_to configuration for repositories
* Added: SFTP uploader for releases
* Added: convenience method group() for specifying multiple artifacts in same
group and version number
* Added: install target copies package to local repository and adds a POM,
uninstall package removes package (and POM) from local repository
* Changed: project lookup now happens through project() method
* Changed: locating file in the local repository now happens through
Repositories
* Changed: downloading file into the local repository now happens through
Repositories
* Changed: notation for specifying multiple artifacts in a string is now
foo,bar,baz
* Changed: artifact identifier is now specified with the key :id
* Changed: download POM alongside artifact and install in local repository
* Changed: no more scoping artifacts collection in project, use compile.with
instead
* Changed: moved HTTP download logic to transports.rb
* Removed: deprecated grouping with multiple artifacts under id key

0.6 (2007-02-01)
* Added:   Artifact resolution introduces the notion of a spec, which can be
supported using ActsAsArtifact
* Added:   You can now use a project as an artifact, resulting in all its
packages being added, or use a task as artifact
* Changed: project.sub_projects renamed project.projects
* Changed: what used to be called dependencies is now called artifacts
* Changed: all artifacts are now created as tasks that know how to download
themselves unless some other behavior is specified
* Changed: local and remote repositories are now defined on the Rakefile
instead of individual projects
* Changed: attributes now stored directly as instance variables
* Changed: ANSI colors and progress bar now using Ruby Facets

0.5 (2007-01-24)
* Added: Build number for each top-level project, build_number method for
accessing it and build:increment task for updating the build number file.
* Added: to_path method on project to resolve paths relative to base_dir.
* Added: recursive_task method on project to create task in
project/sub-project.
* Added: compiler property for passing any options to Javac.
* Changed: remove task renamed uninstall.
* Changed: and to confuse more remove task (RemoveTask) renamed delete.
* Changed: consolidated before_create/after_create to on_create.
* Changed: version, group, artifact added as accessors to project.
* Changed: project definition block takes project as argument.
* Changed: project enhanced only if new settings or block.
* Changed: local_repository is now separate attribute from repositories.
* Changed: Directory structure, now split into rbs, rbs-java and tasks.
* Removed: project.options. Using a different attributes mechanism.

0.4 (2007-01-23)
* Added: CopyTask now deals with files and directories, can copy multiple
files, and applies filter to all of them. Filter can be a hash or a proc.
* Added: Project gets resources_filter attribute that can be used to set the
filter on all copied resources.
* Added: HTTP module for getting and downloading files, and a download task.
* Changed: Dependencies now check signatures for every file, if available, and
show download progress.

0.3 (2007-01-22)
* Added: Dependencies loaded from Maven repositories if not existing or built
by project.  Use rake dependencies to force update, or let compilation take
care of it.
* Added: Copy task for copying one file to another, and filtering support.

0.2 (2007-01-21)
* Added: remove task to get rid of packages added to the local repository.
* Changed: recompile project if any of its dependencies is newer than the
source code.  Will cause recompile if any of the dependencies was compiled and
packaged again.
* Changed: compile task depends on javac task and resource copy tasks.  This
might change when adding filtering later on.

0.1 (2007-01-19)
* Added: build and clean tasks
* Added: resources are now copied over during compilation
* Added: POM file generated in local repository (keep Maven happy)
* Added: compile scope for use by javac
* Added: WAR packaging.
* Changed: Root project operates on the current directory, sub-projects on sub
directories. See Rakefile for example.
