= Buildr

This is Buildr, the build system that lets you build like you code.

http://buildr.apache.org/

== Get Started

=== Install Buildr

Buildr needs Ruby 1.8 or later and RubyGems 0.9 or later.

Windows users can get the one-click Ruby installer, which includes the latest
version of Ruby and RubyGems:

http://rubyinstaller.rubyforge.org

Make sure to set JAVA_HOME environment variable first, then:

  gem install buildr

(Use sudo for Linux and OS X)

More installation and setup instructions available online
http://buildr.apache.org/


=== RTFM

* Buildr documentation: http://buildr.apache.org
* More about Rake: http://docs.rubyrake.org
* Antwrap documentation: http://antwrap.rubyforge.org


=== Mailing list

Users: users-subscribe@buildr.apache.org http://buildr.markmail.org/search/list:users

Developers: dev-subscribe@buildr.apache.org http://buildr.markmail.org/search/list:dev

Create your own Buildfile and start living the life!


== Where's My Ruby?

Buildr needs Ruby 1.8 or later and RubyGems 0.9 or later. All other
dependencies are installed when you run:

  gem install buildr

=== Windows

Windows users can get the one-click Ruby installer, which includes the latest
version of Ruby and RubyGems:

http://rubyinstaller.rubyforge.org

Before installing Buildr, please set the JAVA_HOME environment variable to
point to your JDK distribution.  Next, use Ruby Gem to install Buildr:

  > gem install buildr

When prompted for a platform, select mswin32.

=== Linux, BSD, Cygwin

On Linux/BSD/Cygwin, use your default package manager, for example, for Ubuntu:

$ sudo apt-get install ruby
$ sudo apt-get install ruby1.8-dev
$ sudo apt-get install build-essential
$ sudo apt-get install libopenssl-ruby

Before installing Buildr, please set the JAVA_HOME environment variable to
point to your JDK distribution.  Next, use Ruby Gem to install Buildr:

  $ sudo env JAVA_HOME=$JAVA_HOME gem install buildr

When prompted for a platform, select ruby.

=== OS X

Leopard includes the latest version of Ruby, if you are using Tiger or an older
release, we recommend re-installing the latest:

http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx

To install Buildr:

  $ sudo gem install buildr

When prompted for a platform, select ruby.


== Living On the Edge

You can check the latest sources from SVN:

  svn co http://svn.apache.org/repos/asf/buildr/trunk

Or browse the SVN repository online:
http://svn.apache.org/repos/asf/buildr

If you prefer Git, a Git fork is available from http://github.com/buildr/buildr/tree/master:

  git clone git://github.com/buildr/buildr.git

To install Buildr locally from source:

  cd buildr
  rake install

If the cutting edge doesn't work, make sure to check the CHANGELOG, to see
which changes might have broken your build.  To run all the test cases:

  rake spec


== License

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.
