任何级别的商业用户都可以访问 JIRA 的源代码。本主题说明如何将此源代码构建到可部署的 JIRA 应用程序中。
仅当您需要对 JIRA 的源代码进行大量修改并使用WAR 方法时,才需要从源代码构建所有 JIRA 。
在以下情况下,您不需要重建 JIRA:
- 您需要更改许多 JSP 文件。JSP 文件是许多 JIRA 网页的模板文件。它们也可以更容易地直接在独立的 JIRA 安装目录中进行更改。
- 创建一个为 JIRA 添加功能的 JIRA 插件。有关更多信息,请阅读JIRA 插件指南。JIRA 功能的更改和增强通常可以使用 JIRA 插件进行,而无需修改核心 JIRA 源代码。
- 可以使用独立外部源目录中的说明重新编译少量源文件。
在本页面:
此页面上的信息不适用于JIRA OnDemand。
从 JIRA 源版本构建 JIRA WAR 文件
- 确保您拥有 JDK 1.6 或更高版本并安装了Subversion客户端。
- 从Maven 网站的Apache 存档下载 Maven 2.1.0。目前,我们尚未测试使用 Maven 3 从源代码构建 JIRA。
将 Maven 提取到操作系统上的适当位置。例如,
在 Windows 上,提取到:<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>C:\apache-maven-2.1.0
</
font
></
font
>
在 Mac/Linux 上,解压到:
<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>/usr/local/apache-maven-2.1.0
</
font
></
font
>
设置 M2_HOME 环境变量。例如,
在 Windows 上:<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>> 设置 M2_HOME=C:\apache-maven-2.1.0
</
font
></
font
>
或者,可以通过选择来配置 Windows 环境变量
My Computer >> Properties >> Advanced >> Environment Variables
。在 Mac/Linux 上:
<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>导出 M2_HOME=/usr/local/apache-maven-2.1.0
</
font
></
font
>
将 Maven 的 bin 目录添加到您的路径。例如,
在 Windows 上:<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>> 设置 PATH=%M2_HOME%\bin
</
font
></
font
>
My Computer >> Properties >> Advanced >> Environment Variables
如果您愿意,您可以再次设置此选项。在 Mac/Linux 上:
<
font
style
=
"vertical-align: inherit;"
><
font
style
=
"vertical-align: inherit;"
>导出 PATH=$PATH:$M2_HOME/bin
</
font
></
font
>
将以下所有受限第三方 (
.jar
) 库安装到本地 Maven 存储库 (.m2
),确保下载下面指定的版本。从源代码成功构建 JIRA 需要所有这些库。如果缺少这些库中的任何一个,则构建过程将失败。
由于许可限制,我们无法从 Atlassian 的公共 Maven 存储库分发这些第三方库。如果您已经从源代码构建了以前版本的 JIRA,那么您可能已经在本地 Maven 存储库中拥有其中一些库。图书馆
Maven groupId 和 artifactId
版本
下载网址
激活
javax.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 杰姆斯
javax.jms:jms
1.1
http://repository.jboss.org/nexus/content/groups/public-jboss/javax/jms/jms/1.1/ jmxri
和
jmxtoolscom.sun.jmx:jmxri
和
com.sun.jdmk:jmxtools1.2.1
http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html(下载《JMX 1.2.1 参考实现》)
金迪
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(下载“类文件 1.0.1B”)
邮件
javax.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(在“Oracle 数据库 11g 第 2 版 (11.2.0.2.0) JDBC 驱动程序”下下载“ojdbc6.jar”)
要安装这些受限制的第三方库:- 将每个(从上面的链接)下载到文件系统上的一个目录中,例如,
downloads
在您的主目录区域中。
jmxri 、jmxtools、jndi、jta和mail库作为文件下载,然后您可以将这些库安装到本地 Maven 存储库中,或者:.zip
.jar
必须从中提取密钥文件或- 他们需要在
.jar
形式。
- 对于jmxri和jmxtools:
- 在 Windows 上:
使用 Windows 资源管理器进入目录并从文件的子目录中downloads
提取jmxri.jar
和文件。jmxtools.jar
jmx-1_2_1-bin\lib
jmx-1_2_1-ri.zip
在 Linux 上:
cd $HOME/Downloads<
font
></
font
>
unzip jmx-1_2_1-ri.zip jmx-1_2_1-bin/lib/jmxri.jar jmx-1_2_1-bin/lib/jmxtools.jar<
font
></
font
>
- 在 Windows 上:
- 对于jndi:
- 在 Windows 上:
使用 Windows 资源管理器进入downloads
目录并jndi.jar
从文件的lib
子目录中提取jndi-1_2_1.zip
文件。 在 Mac/Linux 上:
cd $HOME/Downloads<
font
></
font
>
unzip jndi-1_2_1.zip lib/jndi.jar<
font
></
font
>
- 在 Windows 上:
- 对于jta:
- 在 Windows 上:
使用 Windows 资源管理器进入downloads
目录并将jta-1_0_1B-classes.zip
文件重命名为jta-1_0_1B-classes.jar
在 Mac/Linux 上:
cd $HOME/Downloads<
font
></
font
>
mv jta-1_0_1B.zip jta-1_0_1B.jar<
font
></
font
>
- 在 Windows 上:
- 对于邮件:
- 在 Windows 上:
使用 Windows 资源管理器进入downloads
目录并mail.jar
从文件的javamail-1.3.2
子目录中 提取javamail-1.3.2.zip
文件。 在 Mac/Linux 上:
cd $HOME/Downloads<
font
></
font
>
unzip javamail-1.3.2.zip javamail-1.3.2/mail.jar<
font
></
font
>
- 在 Windows 上:
下载、扩展和重命名这些库后,将它们安装到本地 Maven 存储库中。例如,在您的
downloads
目录中,输入以下命令:mvn install:install-file -DgroupId=javax.activation -DartifactId=activation -Dversion=1.0.2 -Dpackaging=jar -Dfile=activation-1.0.2.jar<
font
></
font
>
mvn install:install-file -DgroupId=javax.jms -DartifactId=jms -Dversion=1.1 -Dpackaging=jar -Dfile=jms-1.1.jar<
font
></
font
>
mvn install:install-file -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxri.jar<
font
></
font
>
mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=jmxtools.jar<
font
></
font
>
mvn install:install-file -DgroupId=jndi -DartifactId=jndi -Dversion=1.2.1 -Dpackaging=jar -Dfile=jndi.jar<
font
></
font
>
mvn install:install-file -DgroupId=jta -DartifactId=jta -Dversion=1.0.1 -Dpackaging=jar -Dfile=jta-1_0_1B-classes.jar<
font
></
font
>
mvn install:install-file -DgroupId=javax.mail -DartifactId=mail -Dversion=1.3.2 -Dpackaging=jar -Dfile=mail.jar<
font
></
font
>
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar
- 将每个(从上面的链接)下载到文件系统上的一个目录中,例如,
- 从http://www.atlassian.com/software/jira/JIRASourceDownloads.jspa下载 JIRA 源档案。
您需要以具有商业许可证的用户身份登录才能访问此页面。 - 将 JIRA 源存档解压缩到您选择的位置。这将创建一个名为 的子目录
atlassian-jira-X.Y-source
,其中 XY 是您的 JIRA 版本。例如,C:\atlassian-jira-4.3-source
通过执行以下 Maven 2 命令将目录更改为该子目录并构建 JIRA。例如,
在 Windows 上:C:\atlassian-jira-
4.3
-source\> build.bat
在 Mac/Linux 上:
> build.sh
构建脚本将从 Atlassian 的公共 Maven 存储库下载几个依赖项。
但是,在极少数情况下,构建过程可能会失败,并且您可能会收到类似于 Atlassian 产品无法从 Atlassian 的公共 Maven 存储库安装插件时遇到的错误。此问题是由 JVM 无法访问其默认的“cacerts”文件引起的,该文件包含信任 Atlassian 的公共 Maven 存储库的证书。
要解决此问题:- 尝试 Confluence 知识库文章中提到的解决方案之一:Unable to Install Plugin Due to Maven SSL。
- 如果这不能解决问题,您可能有一个“jssecacerts”文件,其中不包含信任 Atlassian 的公共 Maven 存储库的证书。如果 JVM 中存在“jssecacerts”文件,则可能会忽略“cacerts”文件。
- 一个名为
jira-webapp-dist-X.Y.war
(其中 XY 是您的 JIRA 版本)的 WAR 文件将构建在jira-project/jira-distribution/jira-webapp-dist/target
您提取的 JIRA 源目录的子目录中。
例如,如果上面创建的子目录是C:\atlassian-jira-4.3-source
,则 WAR 文件将位于:C:\atlassian-jira-4.3-source\jira-project\jira-distribution\jira-webapp-dist\target\jira-webapp-dist-4.3.war
JIRA 源构建的解压版本也可以在jira-project/jira-distribution/jira-webapp-dist/target/jira-webapp-dist-X.Y
提取的 JIRA 源目录的子目录中找到。 - 生成的 WAR 文件现在可以安装到您的应用程序服务器中,以运行您刚刚构建的 JIRA 应用程序。有关更多信息,请参阅JIRA WAR 配置概述。对于具体的安装说明,您可以按照以下步骤跳过第 1 和第 3 阶段:
使用 IDE 连接器进行开发
从IDE 连接器文档了解 IDE 连接器。
获取JIRA依赖的来源
从源代码构建 JIRA 时,Maven 将在构建过程中自动获取它需要的二进制(编译)依赖项,因此您不必手动进行(上述第三方库除外)。
值得注意的是,JIRA 的源码分发不仅附带了 JIRA 的源码,还包括了 JIRA 所依赖的内部 Atlassian 项目的源码(例如 atlassian-bonnie、atlassian-core 等)。当您构建 JIRA 时,这些内部 Atlassian 依赖项也是从源代码构建的。
Atlassian 的公共存储库中提供了其他依赖项。这些依赖项的来源通常可以在库的网站上找到(尝试搜索库名称),或者可以在相关库的SCM信息中识别。
如果您对构建过程有任何疑问,请在JIRA 开发论坛上发帖,该论坛由开发社区持续监控,并尽可能经常由 Atlassian 进行监控。
编译单类补丁
如果你只想编译一个类(可能是一个服务),我们有一个关于如何在 IDEA 中执行此操作的分步指南。有关详细信息,请参阅如何制作 JIRA 补丁。