Building RoboTracker

  1. The build process depends on Ant and jUnit. Please see the Acknowledgements section for the relevant links. JUnit is easy to install; just pop it into your classpath. Ant comes with its own installation guide.

  2. Download and unzip/untar the source distribution into a directory called, for example "dev/".

  3. The top-level distribution directories are the following:

  4. Top-level files are

  5. Create a sibling directory to "dev/" called "local/". This directory will contain your customisations of the build process.

  6. Create two files, "local/build.properties" and "local/init.properties".

  7. The "init.properties" file is the same format as the file in your "~/.robotracker" directory. It points to a database. The Unit Tests eat everything they find in this database. Therefore, this file should point to another database instance, because the unit tests will zap everything in this database in order to have a clean run.

  8. The "build.properties" has the following entries:
    # location of java library files (usually, you will have the beanshell, junit, database driver jars all in here)
    lib=/home/username/projects/lib
    
    # where to store temporary byproducts of the compile/test/package processes.
    # examples: /tmp/robotracker, or ~/projects/robotracker/tmp
    tmp=/tmp/robotracker
    
    # where to put the release distribution
    distribution=/home/username/projects/robotracker/distributions
        
    Ant reads this file so it knows where to find libraries, where to put temporary files, and where to put the final tarred gzipped package.

  9. So, finally, change to the "dev/" directory of your source distribution, and type "ant". Ant will execute the "all" target of "build.xml", which compiles the source code in "java/" and in "junit/", creates a jar file, runs the unit tests, and creates the source and binary distributions. The name of each unit test will be printed as it is run.

For Your Sanity

So that I control the code, and not the other way around, I maintain four separate database instances for the following tasks:
  1. "robounit" - for running jUnit tests. This database is referenced from "local/init.properties".
  2. "robogui" - for running functional tests. The directory containing the init.properties file for this database is passed as a command-line argument to the launch script.
  3. "robobeta" - for manual testing of the latest version (catch all the stuff that doesn't have test cases yet - I know, I'm bad) - again, use a command-line argument to point to this database.
  4. "robotracker" - the database for real, live, production use. Referenced from "~/.robotracker/init.properties"