<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at
   
         http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
  <Project rdf:about="http://buildr.apache.org">
    <created>2012-10-07</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Buildr</name>
    <homepage rdf:resource="http://buildr.apache.org" />
    <asfext:pmc rdf:resource="http://buildr.apache.org" />
    <shortdesc>Apache Buildr is a build system for Java-based applications, including support for Scala, Groovy and a growing number of JVM languages and tools.</shortdesc>
    <description>We wanted something that's simple and intuitive to use, so we only need to tell it what to do, and it takes care of the rest.  But also something we can easily extend for those one-off tasks, with a language that's a joy to use.</description>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/Buildr" />
    <mailing-list rdf:resource="http://buildr.apache.org/mailing_lists.html" />
    <download-page rdf:resource="http://buildr.apache.org/download.html" />
    <programming-language>Ruby</programming-language>
    <category rdf:resource="http://projects.apache.org/category/build-management" />
    <release>
      <Version>
        <name>1.5.6</name>
        <created>2018-05-10</created>
        <revision>1.5.6</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.5</name>
        <created>2017-12-06</created>
        <revision>1.5.5</revision>
        <dc:description>
* 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`

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.4</name>
        <created>2017-11-29</created>
        <revision>1.5.4</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.3</name>
        <created>2017-05-17</created>
        <revision>1.5.3</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.2</name>
        <created>2017-04-03</created>
        <revision>1.5.2</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.1</name>
        <created>2017-03-11</created>
        <revision>1.5.1</revision>
        <dc:description>
* 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 branchs
          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

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.5.0</name>
        <created>2016-09-23</created>
        <revision>1.5.0</revision>
        <dc:description>
* 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 decomissioned. Use Maven Central instead.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.25</name>
        <created>2016-04-18</created>
        <revision>1.4.25</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.24</name>
        <created>2016-03-19</created>
        <revision>1.4.24</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.23</name>
        <created>2015-06-12</created>
        <revision>1.4.23</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.22</name>
        <created>2015-02-28</created>
        <revision>1.4.22</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.21</name>
        <created>2014-11-28</created>
        <revision>1.4.21</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.20</name>
        <created>2014-08-23</created>
        <revision>1.4.20</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.19</name>
        <created>2014-07-06</created>
        <revision>1.4.19</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.18</name>
        <created>2014-06-24</created>
        <revision>1.4.18</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.17</name>
        <created>2014-05-25</created>
        <revision>1.4.17</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.16</name>
        <created>2014-05-03</created>
        <revision>1.4.16</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.15</name>
        <created>2013-11-06</created>
        <revision>1.4.15</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.14</name>
        <created>2013-10-11</created>
        <revision>1.4.14</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.13</name>
        <created>2013-10-02</created>
        <revision>1.4.13</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.12</name>
        <created>2013-05-04</created>
        <revision>1.4.12</revision>
        <dc:description>
* 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

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.11</name>
        <created>2013-03-14</created>
        <revision>1.4.11</revision>
        <dc:description>
* Fixed:  Multiple tests in TestNG 6.x versions were being incorrectly passed to
          the command line application.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.10</name>
        <created>2013-02-17</created>
        <revision>1.4.10</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>

    <release>
      <Version>
        <name>1.4.9</name>
        <created>2012-11-08</created>
        <revision>1.4.9</revision>
        <dc:description>
* 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.

        </dc:description>
      </Version>
    </release>
    <release>
      <Version>
        <name>1.4.8</name>
        <created>2012-11-01</created>
        <revision>1.4.8</revision>
      </Version>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="http://git.apache.org/buildr.git"/>
        <browse rdf:resource="https://github.com/apache/buildr"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Apache Buildr PMC</foaf:name>
          <foaf:mbox rdf:resource="mailto:dev@buildr.apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>
