Building Bitbucket Server from Source Code

This guide describes building a Bitbucket Server distribution from the source code. Bitbucket Server 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 Bitbucket Server, you should first consider writing a plugin instead. Bitbucket Server 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 Bitbucket Server versions may be problematic.

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

Download Java and the Bitbucket Server source

  1. Download and install the Java Development Kit,
    Bitbucket Server requires the JDK 1.8 Update 45 release or higher.

  2. Download and extract the Bitbucket Server 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

Bitbucket Server is built using Maven, which is bundled with the source distribution. During the build, Maven will download the dependencies of Bitbucket Server 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 12c Release 1 (12.1.0.1) JDBC Drivers section, find and download the ojdbc7.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 Bitbucket Server), run the following command:

    • on Mac OS X or Linux:
    ./mvn3.sh install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7.jar -Dmaven.repo.local="`pwd`/localrepo"
    
    • or, on Windows:
    mvn3.bat install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7.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 Bitbucket Server, 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 Bitbucket Server, 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 Bitbucket Server from source

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

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

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

  2. Then, to develop Bitbucket Server in your IDE:

    • create a new project from the bitbucket-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 Bitbucket Server 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 bitbucket-parent/webapp/default
    mvn cargo:run
    
    • then, after each change, re-run build.sh or build.bat.