Building Stash from Source Code

This guide describes building a Stash distribution from the source code. Stash source code is available to all commercial license holders.

Consider building a plugin instead!

If you are downloading the source with the intent of customising Stash, you should first consider writing a plugin instead. Stash provides a comprehensive Plugin SDK and a rich set of stable Java APIs for extending its functionality, which are backwards compatible between major releases. If you choose to modify and build the source code yourself, upgrading to newer Stash versions may be problematic.

If you're really sure you want to modify Stash's source instead of building a plugin, here are the steps for building Stash from source:

Download Java and the Stash source

  1. Download and install the Java Development Kit,
    Stash requires the JDK 1.6 Update 29 release or higher.

  2. Download and extract the Stash source distribution,
    Use your my.atlassian.com account to login (or contact Atlassian's sales department if you do not see the link to download the distribution).

Download the database drivers

Stash is built using Maven, which is bundled with the source distribution. During the build, Maven will download the dependencies of Stash and store them locally. Two of those dependencies are Oracle's and Microsoft's database drivers, which need to be manually installed for legal reasons. If you do not have those drivers in your local Maven repository, follow these instructions to install them:

  1. Download the Oracle JDBC driver (you might need to sign up for an Oracle account),
    • in the Oracle Database 11g Release 2 (11.2.0.2.0) JDBC Drivers section, find and download the ojdbc6.jar driver,
    • copy the driver in the directory where you extracted the source distribution;
  2. And, in the same directory (containing the source distribution of Stash), run the following command:

    • on Mac OS X or Linux:
    ./mvn3.sh install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar -Dmaven.repo.local="`pwd`/localrepo"
    
    • or, on Windows:
    mvn3.bat install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar -Dmaven.repo.local="%CD%\localrepo"
    
  3. Next, download the Microsoft JDBC driver:

    • if you use Mac OS X or Linux,
      • find and download the sqljdbc_4.0.2206.100_enu.tar.gz driver,
      • extract the archive to a temporary directory (such as /tmp/ms-driver),
      • and, in the directory containing the source distribution of Stash, run the following commands (after replacing the path of the driver's directory by the correct one on the first line):
    export MS_DRIVER_PATH="/tmp/ms-driver"
    ./mvn3.sh install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.0.2206 -Dpackaging=jar -Dfile=$MS_DRIVER_PATH/enu/sqljdbc.jar -Dmaven.repo.local="`pwd`/localrepo"
    ./mvn3.sh install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc_auth -Dversion=4.0.2206 -Dclassifier=x64 -Dpackaging=dll -Dtype=dll -Dfile=$MS_DRIVER_PATH/enu/auth/x64/sqljdbc_auth.dll -Dmaven.repo.local="`pwd`/localrepo"
    ./mvn3.sh install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc_auth -Dversion=4.0.2206 -Dclassifier=x86 -Dpackaging=dll -Dtype=dll -Dfile=$MS_DRIVER_PATH/enu/auth/x86/sqljdbc_auth.dll -Dmaven.repo.local="`pwd`/localrepo"
    
    • or if you use Windows,
      • find and download the sqljdbc_4.0.2206.100_enu.exe driver,
      • double click on the executable to decompress the driver in a temporary directory,
      • and, in the directory containing the source distribution of Stash, run the following commands (after replacing the path of the driver's directory by the correct one on the first line):
    set MS_DRIVER_PATH=c:\Users\USERNAME\Downloads\Microsoft JDBC Driver 4.0 for SQL Server
    mvn3.bat install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc -Dversion=4.0.2206 -Dpackaging=jar -Dfile="%MS_DRIVER_PATH%\sqljdbc_4.0\enu\sqljdbc.jar" -Dmaven.repo.local="%CD%\localrepo"
    mvn3.bat install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc_auth -Dversion=4.0.2206 -Dclassifier=x64 -Dpackaging=dll -Dtype=dll -Dfile="%MS_DRIVER_PATH%\sqljdbc_4.0\enu\auth\x64\sqljdbc_auth.dll" -Dmaven.repo.local="%CD%\localrepo"
    mvn3.bat install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc_auth -Dversion=4.0.2206 -Dclassifier=x86 -Dpackaging=dll -Dtype=dll -Dfile="%MS_DRIVER_PATH%\sqljdbc_4.0\enu\auth\x86\sqljdbc_auth.dll" -Dmaven.repo.local="%CD%\localrepo"
    

Build Stash from source

  1. Run the following command in the directory containing the source distribution of Stash:

    • on Mac OS X or Linux:
    ./build.sh
    
    • or, on Windows:
    build.bat
    

    This will perform a full build of Stash. The distribution ZIP will be created in the subdirectory stash-parent/distribution/default/target.

  2. Then, to develop Stash in your IDE:

    • create a new project from the stash-parent/pom.xml file in the directory of the source distribution,
    • enable the Tomcat integration in your IDE,
    • once the project is set up, deploy the Stash WAR file using the Tomcat integration.
  3. Alternatively, from the command line:

    • in the directory containing the source distribution (after running build.sh or build.bat in the step 1), run:
    cd stash-parent/webapp/default
    mvn cargo:run
    
    • then, after each change, re-run build.sh or build.bat.