= 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.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.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 GIT:

  git clone http://git.apache.org/buildr.git

If you prefer GitHub, a mirror is available from http://github.com/apache/buildr:

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

To install Buildr locally from source:

  cd buildr
  export JRUBY_OPTS="-J-XX:MaxPermSize=312m -J-Xmx1024M"
  export JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=312m"
  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.
