Building JIRA from source
| 
PDF |
Commercial users get access to JIRA source. This documentation shows how to build the JIRA source back into
an application that can be deployed.
You would only be interested in this documentation if you are making modifications to the JIRA source code.
Changes to JSP files do not require rebuilding JIRA. Also, you should be aware of the possibilities the plugin system affords - often changes can be developed and packaged as a plugin without
requiring core source modifications.
Building JIRA WAR from JIRA Source release
- Ensure you have JDK 1.4 or higher.
- Download Maven 1.0.x from http://maven.apache.org
- Extract Maven somewhere, say c:\Dev\testing
-
Set MAVEN_HOME:
> set MAVEN_HOME=c:\Dev\testing\maven-1.0
- Download Maven 2.0.x from http://maven.apache.org
- Follow the general instructions for setting up Maven 2.0.x
- Download JIRA Source zip from http://www.atlassian.com/software/jira/JIRASourceDownloads.jspa. You will need to log in as a user with a commercial licence to access this page.
- Extract the JIRA Source zip somewhere, say c:\Dev\testing.
-
Your c:\Dev\testing should look somewhat like:
C:\Dev\testing>dir
Volume in drive C is COOKIE
Volume Serial Number is 3F3F-14F0
Directory of C:\Dev\testing
24/02/2003 04:30p <DIR> .
24/02/2003 04:30p <DIR> ..
24/02/2003 04:18p <DIR> atlassian-core
24/02/2003 04:18p <DIR> atlassian-ofbiz
24/02/2003 04:18p <DIR> atlassian-profiling
24/02/2003 04:18p <DIR> atlassian-velocity
24/02/2003 04:18p <DIR> bandana
24/02/2003 04:18p <DIR> configurableobjects
24/02/2003 04:18p <DIR> jira
24/02/2003 04:18p <DIR> johnson
12/02/2003 05:26p <DIR> maven-1.0
24/02/2003 04:18p <DIR> lib
24/02/2003 04:18p <DIR> mail
24/02/2003 04:18p <DIR> plugins
24/02/2003 04:18p <DIR> rpc-jira-plugins
24/02/2003 04:18p <DIR> scheduler
24/02/2003 04:18p <DIR> seraph
24/02/2003 04:18p <DIR> trackback
0 File(s) 0 bytes
10 Dir(s) 16,352,509,952 bytes free
-
Change into the jira\ subdirectory, and build using Maven by executing the following command:
C:\Dev\testing\jira> maven war:webapp
If you would like to build a closed WAR file, then do not use the command displayed above. You will need to run the following maven command instead:
maven -Djira.build.bundle.plugins=false include-rpc-plugin war:war
Note
The -Djira.build.bundle.plugins=false include-rpc-plugin part prevents JIRA trying to
build the Fisheye plugin, which was bundled with 3.12, but which is not buildable from the JIRA source
distribution. It is not required in earlier or later releases.
Note
If you are attempting to build JIRA 3.13, you will need to make changes to the
build.properties
file before running your build, as the maven repository information is incorrect. Hence, your build will not
be able to find dependent JARs, such as atlassian-mail. Please see
JRA-15648 for detailed instructions.
-
Confirm that the open .war has been created in .\target\atlassian-jira
C:\Dev\testing\jira\target\atlassian-jira>dir
Volume in drive C is COOKIE
Volume Serial Number is 3F3F-14F0
Directory of C:\Dev\testing\jira\target\atlassian-jira
24/02/2003 04:41p <DIR> .
24/02/2003 04:41p <DIR> ..
24/02/2003 04:41p <DIR> decorators
24/02/2003 04:41p <DIR> images
24/02/2003 04:41p <DIR> includes
24/02/2003 04:41p <DIR> portlets
24/02/2003 04:41p <DIR> secure
24/02/2003 04:41p <DIR> styles
24/02/2003 04:41p <DIR> template
24/02/2003 04:41p <DIR> views
24/02/2003 04:41p <DIR> WEB-INF
24/02/2003 04:41p 8781 500page.jsp
24/02/2003 04:41p 1593 bugzillasearch.jsp
24/02/2003 04:41p 328 default.jsp
24/02/2003 04:41p 894 favicon.ico
24/02/2003 04:41p 211 login-error.jsp
24/02/2003 04:41p 203 login.jsp
24/02/2003 04:41p 733 logoutconfirm.jsp
24/02/2003 04:41p 939 logout.jsp
8 File(s) 13,682
11 Dir(s) 56931786752 bytes free
You should now be able to point a suitably configured Servlet 2.3+ compliant app server at this directory, and run JIRA.
Developing using Intellij IDEA
If you are an IDEA user, you may wish to use the atlassian-idea plugin we have developed to
quickly generate a work environment.
Building the Atlassian source dependencies
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
dependencies are included in JIRA in binary format when you build the JIRA source (they are downloaded from the
Atlassian maven repository).
You can, however, compile the provided source to generate the binaries yourself. These projects use a mix
of Maven 1 and Maven 2 build systems to compile and package their source. You can tell a project uses Maven 1
if the project contains a file called 'project.xml' in the top level directory. If a project uses Maven 2, it
will contain a file called 'pom.xml' in the top level directory.
Building a Maven 1 project you will invoke 'maven jar', whereas for a Maven 2 project you will invoke 'mvn package'.
In order to run the 'mvn' command you will have to install Maven 2. Please follow
the general instructions regarding setting up a development environment. Please note that you will also
have to add the Atlassian Maven 2 repository to your Maven 2 configuration. To do this you will need
to edit your settings.xml as described here.
Obtaining the source of JIRA's dependencies
Most of JIRA's dependencies are either shipped in binary (compiled) form
with the source distribution, or are available on Maven's public repository.
Maven will fetch the dependencies that it requires automatically during
the build process, so you do not have to do it manually. Hence, you do
not need the source of every dependency to build JIRA from source.
However, sometimes you might want to "look inside" these dependencies.
If so, this section is for you.
The source distribution of JIRA is shipped with a project.xml file. All of
JIRA's dependencies are listed inside this file. Most of the
dependencies are open source libraries but some are Atlassian's code.
All of the Atlassian code is included in the source distribution. The
source of the other dependencies is usually available on the library's
website (try googling for the
library name).
In some cases JIRA uses unofficial 'snapshot' releases of a library,
sometimes additionally patched to fix bugs or add features. In these
cases the library source can be obtained from Atlassian's repository, at
http://repository.atlassian.com/dependencyId/distributions/,
where dependencyId is the dependency name found in the
project.xml record.
For example, source for the dependency:
<dependency>
<id>javacvs</id>
<version>20050531-patched</version>
<properties>
<war.bundle>true</war.bundle>
</properties>
</dependency>
can be found at http://repository.atlassian.com/javacvs/distributions/javacvs-20050531-patched-src.tar.gz.
If source modifications were made, a patch is usually available at
http://repository.atlassian.com/dependencyId/patches/
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.
Compiling classes into JIRA Standalone
If you just want to compile one class (perhaps a service) and you're using the
JIRA Standalone distribution, there is an Ant-based mini-build system available in the
external-source directory. See JIRA
Standalone quick source modifications for details.