Documentation for JIRA 5.2. Documentation for other versions of JIRA is available too.
Please be aware that the content on this page is is not included in our Atlassian Support Offerings and consequently Atlassian can not guarantee providing any support for it. Please be aware that this material is provided for your information only and using it is done so at your own risk.
Commercial users at any level receive access to JIRA's source code (note, evaluation license holders are not permitted access to JIRA's source code). This topic explains how to build this source code into a deployable JIRA application.
Building all of JIRA from source is only necessary if you need to make extensive modifications to JIRA's source code and are using a WAR approach.
You should not need to rebuild JIRA if:
There is a known issue where the Workflow Designer source is missing from the JIRA source code which is being tracked under - JRA-29615Getting issue details... STATUS - please keep this is mind when building JIRA from source.
On this page:
Extract Maven to an appropriate location on your operating system. For example,
On Windows, extract to:
C:\apache-maven-2.1.0
On Mac/Linux, extract to:
/usr/local/apache-maven-2.1.0
Set the M2_HOME environment variable. For example,
On Windows:
> set M2_HOME=C:\apache-maven-2.1.0
Alternatively, the Windows environment variables can be configured by choosing My Computer >> Properties >> Advanced >> Environment Variables
.
On Mac/Linux:
export M2_HOME=/usr/local/apache-maven-2.1.0
Add Maven's bin directory to your path. For example,
On Windows:
> set PATH=%M2_HOME%\bin
You can set this via My Computer >> Properties >> Advanced >> Environment Variables
again if you wish.
On Mac/Linux:
export PATH=$PATH:$M2_HOME/bin
Install all of the following restricted third party (.jar
) libraries to your local Maven repository (.m2
), ensuring that you download the version specified below. All of these libraries are required to successfully build JIRA from source. If any of these libraries are missing, the build process will fail.
Due to licensing restrictions, we are unable to distribute these third party libraries from Atlassian's public Maven repository. If you have built previous versions of JIRA from source, you may already have some of these libraries in your local Maven repository.
Libraries | Maven groupId and artifactId | Version | Download URL |
---|---|---|---|
activation | javax.activation:activation | 1.0.2 | http://repository.jboss.org/nexus/service/local/repositories/deprecated/content/javax/activation/activation/1.0.2/activation-1.0.2.jar |
jms | javax.jms:jms | 1.1 | http://repository.jboss.org/nexus/content/groups/public-jboss/javax/jms/jms/1.1/ |
jmxri | com.sun.jmx:jmxri | 1.2.1 | http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html (Download 'JMX 1.2.1 Reference Implementation') |
jndi | jndi:jndi | 1.2.1 | http://java.sun.com/products/jndi/downloads/index.html |
jta | jta:jta | 1.0.1B | http://www.oracle.com/technetwork/java/javaee/jta/index.html (Download 'Class Files 1.0.1B') |
javax.mail:mail | 1.3.2 | http://www.oracle.com/technetwork/java/javamail-1-3-2-138617.html | |
ojdbc6 | com.oracle:ojdbc6 | 11.2.0.2.0 | http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html (Download 'ojdbc6.jar' under 'Oracle Database 11g Release 2 (11.2.0.2.0) JDBC Drivers') |
To install these restricted third party libraries:
downloads
in your home directory area..zip
files and before you can install these libraries into your local Maven repository, either:.jar
file must be extracted from them or.jar
form.downloads
directory and extract the jmxri.jar
and jmxtools.jar
files from the jmx-1_2_1-bin\lib
subdirectory of the jmx-1_2_1-ri.zip
file.On Linux:
cd $HOME/Downloads unzip jmx-1_2_1-ri.zip jmx-1_2_1-bin/lib/jmxri.jar jmx-1_2_1-bin/lib/jmxtools.jar
downloads
directory and extract the jndi.jar
file from the lib
subdirectory of the jndi-1_2_1.zip
file.On Mac/Linux:
cd $HOME/Downloads unzip jndi-1_2_1.zip lib/jndi.jar
downloads
directory and rename the jta-1_0_1B-classes.zip
file to jta-1_0_1B-classes.jar
On Mac/Linux:
cd $HOME/Downloads mv jta-1_0_1B.zip jta-1_0_1B.jar
downloads
directory and extract the mail.jar
file from the javamail-1.3.2
subdirectory of the javamail-1.3.2.zip
file.On Mac/Linux:
cd $HOME/Downloads unzip javamail-1.3.2.zip javamail-1.3.2/mail.jar
Once you have downloaded, expanded and renamed each of these libraries, install them into your local Maven repository. For example, in your downloads
directory, enter the following commands:
mvn install:install-file -DgroupId=javax.activation -DartifactId=activation -Dversion=1.0.2 -Dpackaging=jar -Dfile=activation-1.0.2.jar mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=jms-1.1.jar mvn install:install-file -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxri.jar mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxtools.jar mvn install:install-file -DgroupId=jndi -DartifactId=jndi -Dversion=1.2.1 -Dpackaging=jar -Dfile=jndi.jar mvn install:install-file -DgroupId=jta -DartifactId=jta -Dversion=1.0.1 -Dpackaging=jar -Dfile=jta-1_0_1B-classes.jar mvn install:install-file -DgroupId=javax.mail -DartifactId=mail -Dversion=1.3.2 -Dpackaging=jar -Dfile=mail.jar mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar
atlassian-jira-X.Y-source
, where X.Y is your version of JIRA. For example, C:\atlassian-jira-4.3-source
Change directory into this subdirectory and build JIRA by executing the following Maven 2 command. For example,
On Windows:
C:\atlassian-jira-4.3-source\> build.bat
On Mac/Linux:
> build.sh
The build script will download several dependencies from Atlassian's public Maven repository.
On rare occasions, however, the build process may fail and you may receive an error similar to the one encountered when an Atlassian product is unable to install a plugin from Atlassian's public Maven repository. This problem is caused by the JVM being unable to access its default 'cacerts' file, which contains a certificate that trusts Atlassian's public Maven repository.
To resolve this problem:
jira-webapp-dist-X.Y.war
(where X.Y is your version of JIRA), will be built in the jira-project/jira-distribution/jira-webapp-dist/target
subdirectory of your extracted JIRA source directory. C:\atlassian-jira-4.3-source
, the WAR file will be found in:C:\atlassian-jira-4.3-source\jira-project\jira-distribution\jira-webapp-dist\target\jira-webapp-dist-4.3.war
jira-project/jira-distribution/jira-webapp-dist/target/jira-webapp-dist-X.Y
subdirectory of your extracted JIRA source directory.Learn about the IDE Connectors from the IDE Connector Documentation.
When building JIRA from source, Maven will fetch the binary (compiled) dependencies that it requires automatically during the build process, so you do not have to do it manually (with the exception of the third party libraries mentioned above).
It is worth noting that JIRA's source distribution not only ships with JIRA's source code, it also includes the source of the internal Atlassian projects that JIRA depends on (e.g. atlassian-bonnie, atlassian-core, etc.). These internal Atlassian dependencies are also built from source when you build JIRA.
Other dependencies are available on Atlassian's public repository. The source of these dependencies is usually available on the library's website (try googling for the library name), or can be identified in the SCM information of the relevant library.
If you have any questions regarding the build process, please post to the JIRA Development Forum, which is monitored continually by the development community, and by Atlassian as often as possible.
If you just want to compile one class (perhaps a service), we have a step-by-step guide for how to do this in IDEA. See How to Make a JIRA Patch for details.
1 Comment
stefan
This Guide is not complete; you don't need 1-5!
Maven is included in the source!
If you need a proxy, add it to settings.xml. You will also need a https proxy: add this to mvn2.sh after as option to the mvn call!
-Dhttps.proxyHost=meinHost -Dhttps.proxyPort=meinProxyport