# Smack Source Distribution

Smack Source Distribution

This document provides detailed information for developers that wish to compile and make changes to the Smack source code.

For additional developer resources, please visit: http://www.jivesoftware.org/smack/. The Smack build process is based on Ant. Visit the Ant website for more information and downloads.

This documentation is divided into two sections:

1. Setup -- how to setup your environment for Smack development.
2. Build tasks -- tasks that can be performed using the build program.

1. Setup Your Environment

Getting your machine ready for Smack development requires a few steps. Wherever possible, instructions are provided for both Unix/Linux and Windows users.

Configure Java

Java 5 (JDK 1.5 or later) must be installed and setup on your machine. To test the installation, open a shell in a Unix or a MS-DOS prompt in Windows. Check your version of Java with "java -version" -- it must version 1.5 or greater. If Java isn't installed, download a copy from the Java website.

Important! -- the Smack build tool needs to know where Java is installed on your system. You must configure the "JAVA_HOME" environment variable to point to the correct directory. Instructions on how to set this variable for various platforms are as follows:

- Unix/Linux
  1. Edit the ".profile" file in your home directory (or corresponding file for your shell).
  2. Set the JAVA_HOME environment variable by adding the following line to the file:

     `export JAVA_HOME=/usr/local/jdk1.5`

     The value "/usr/local/jdk1.5" should be replaced with your actual Java directory. Be sure there are no spaces after the end of the directory name. Do not add an extra slash after the directory name.

  3. Save changes to the file and then "source" it:

     `source .profile`

     The JAVA_HOME variable should now be configured correctly.

- Windows
  1. Navigate to your desktop and right click on "My Computer"; choose properties.
  2. Select the "Advanced" tab and click on the "Environment Variables" button.
  3. Click the "New..." button in the System variables section. Enter the variable name "JAVA_HOME" and set the variable value to the full path of your Java installation. For example, "c:\jdk1.5". Be sure to not add an extra slash to the end of the directory name.
  4. Click "OK" in all of the menus to accept the changes.
  5. Close any open command prompt windows. The next time you open a command prompt, the "JAVA_HOME" variable will be set correctly.

Configure Ant

Download the Ant build tool from the Ant website. Follow the setup instructions for your operating system.

Test the Build Script

Navigate into the subdirectory of this distribution named "build" via the command-line.

Linux/Unix users only:You must make the ant script executable. From the build directory, type: `chmod u+x ant`

Now, invoke the build tool to compile the Smack source code

Windows:`ant
` Unix/Linux:`./ant`

If the build tool is invoked correctly and Smack compiles, you've correctly configured your copy of the Smack developer distribution.

Finished!

If you've gotten this far, you've finished setting up the Smack developer distribution. Now, read below to learn about all of the tasks that you can perform with the build tool.

2. Build Tasks

The list of build tasks is below. All build commands should be run from the "build" directory of your Smack distribution.
For a list of the commands and a brief description from the command line, type `ant -projecthelp`. For more complete help, read the documentation below.
To execute a build task, type `ant [options] targetname` where "targetname" is one of the targets listed below:

- Default
- compile
- jar
- javadoc
- clean

Each task is documented with a syntax guide and description. Optional paramaters for each task are enclosed with braces.

Default

Syntax:

`ant
`

Description:

Equivalent of calling "ant jar".

[return to task list]

compile

Syntax:

`ant compile
`

Description:

Compiles all the Smack source code. The build directory is the "target/classes" directory under your Smack source distribution.

[return to task list]

jar

Syntax:

`ant jar
`

Description:

Bundles the Smack class files into a JAR file (smack.jar) that is suitable for adding into the classpath of an application server.

[return to task list]

javadoc

Syntax:

`ant javadoc
`

Description:

JavaDocs all Smack source code in the source directory.

[return to task list]

clean

Syntax:

`ant clean
`

Description:

Cleans your Smack distribution directory by deleting compiled class files, the smack.jar file and Javadoc files.

[return to task list]