Build instructions for Tajo

--------------------------------------------------------------------------------
Requirements:

* Unix System
* JDK 1.7 or higher
* Maven 3.0 or higher
* Protocol Buffers 2.5.0
* Internet connection for first build (to fetch all Maven and Tajo dependencies)

--------------------------------------------------------------------------------
Maven main modules:

  tajo                            (Main Tajo project)
         - tajo-project           (Parent POM for all Tajo Maven modules. )
                                  (All plugins & dependencies versions are defined here.)
         - tajo-algebra
         - tajo-common
         - tajo-rpc
         - tajo-catalog
         - tajo-storage
         - tajo-pullserver
         - tajo-core
         - tajo-client
         - tajo-jdbc
         - tajo-maven-plugin
         - tajo-docs
         - tajo-dist              (Tajo distribution assembler)

--------------------------------------------------------------------------------
Maven build goals:

 * Clean                     : mvn clean
 * Compile                   : mvn compile
 * Run tests                 : mvn test
 * Run integrating tests     : mvn verify
 * Create JAR                : mvn package
 * Run findbugs              : mvn compile findbugs:findbugs
 * Install JAR in M2 cache   : mvn install
 * Build distribution        : mvn package [-Pdist][-Dtar]

 Build options:
  * Use -Dtar to create a TAR with the distribution (using -Pdist)
  * Use -Dhadoop.version to build with the specific hadoop version (-Dhadoop.version=2.7.1)
    * Currently, 2.3.0 or higher are supported.
  * Use -Dhbase.version to build with the specific hbase version (-Dhbase.version=0.98.7-hadoop2)
    * Currently, 0.98.x-hadoop2 or higher are tested.

 Tests options:
  * Use -DskipTests to skip tests when running the following Maven goals:
    'package',  'install', 'deploy' or 'verify'
  * -Dtest=<TESTCLASSNAME>,<TESTCLASSNAME#METHODNAME>,....
  * -Dtest.exclude=<TESTCLASSNAME>
  * -Dtest.exclude.pattern=**/<TESTCLASSNAME1>.java,**/<TESTCLASSNAME2>.java

--------------------------------------------------------------------------------
Building distributions:

Create binary distribution

  $ mvn clean install -Pdist -DskipTests -Dtar -Dhadoop.version=2.X.X

You should substitute 2.X.X with your Hadoop version.

--------------------------------------------------------------------------------
