<?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.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>
