Build instructions for Tajo

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

* Unix System
* JDK 1.6 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-common
         - tajo-catalog
         - tajo-core
         - tajo-rpc
         - 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)

 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 package -Pdist -DskipTests -Dtar

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