С чего начать разработку плагина для JIRA?

Lumber room
Используя мощный, настраиваемый баг/таск-трекер JIRA (или Confluence), со временем приходит понимание, что в некоторых случаях не хватает нужного функционала, которого нельзя получить из стандартных и представленных на сайте плагинов. Всвязи с этим приходиться выходит на новый уровень: собственная разработка. Когда это такое время приходит, встают вопросы: с чего начинать? В JIRA и Confluence куча зависимостей между библиотеками, как их связать воедино, что бы создать нужное? Где это все сделать?
В данной статье не будет рассказано как сделать плагин, потому что для каждого варианта требуется разные подходы. Расскажу только как подготовить платфотму для разработки.

Для разработки потребуются знания Java, velocity и веберские html, css, js. Некоторый опыт работы в IDE для Java (в данном случае я использую Eclipse), дружба с tomcat, mysql и установленный трекер JIRA, в котором будет тестироватся разрабатываемый плагин.
Все работы проводятся в ОС Gentoo 2008. Уже установлено:
  • Tomcat-5.5.27-r3 (emerge -av "=«www-servers/tomcat-5.5.27-r3)
  • MySQL-5.0.70-r1 (emerge -av dev-db/mysql)
  • Atlassian JIRA 3.13.2-#335 Enterprise Edition (взята с сайта и установлена по описанию)
  • Eclipse 3.4.2

note: Если устанавливаете JIRA с БД MySQL не забудьте установить mysql-connector-java для настройки работы с сервером БД MySQL, и в Linux’е может потребоватся библиотека naming-factory-dbcp.jar, которую нужно вытащить из архива со Sandalone-JIRA для Windows и положить ее в /usr/share/tomcat-5.5/common/lib/)
note 2: Проверьте наличие установленного JDK не ниже 1.5

2. Установка Maven2


Установка для Gentoo проиходит из портов: emerge -av maven-bin, при этом в данный момент ставится версия 2.0.9, которая подходит под требования для разработки плагина. Для Widnows придется ставить руками с сайта: http://maven.apache.org/download.html.
Для того, что бы Maven находил зависимости при сборки плагина, потребуется указать, где все хранится. В директорию $HOME/.m2 кладем файл settings.xml. Пример данного файла можно сказать на странице: http://confluence.atlassian.com/display/DEVNET/Example+settings.xml.

3. Создание скелета плагина


Вот и подошли к началу, с чего начинается разработка плагина для JIRA (да в общем и для всех приложений от atlassian): создание скелета архитектуры. В общем то тут все банально, требуется запустить команду mvn с набором ключей. Все требуемые команды для создания скелета архитектуры плагинов для приложений можно найти на странице: http://confluence.atlassian.com/display/DEVNET/Atlassian+Plugin+Archetypes. В нашем случае для JIRA потребуется запустить следующий набор:
mvn archetype:create \
-DarchetypeGroupId=com.atlassian.maven.archetypes \
-DarchetypeArtifactId=jira-plugin-archetype \
-DarchetypeVersion=15 \
-DremoteRepositories=https://maven.atlassian.com/repository/public/ \
-DgroupId=$MY_PACKAGE -DartifactId=$MY_PLUGIN

Дальше, что бы IDE могло понять, что это ее проект, в создавшейся папке запустить команду: mvn eclipse: eclipse.
Один раз потребуется указать для Ecplise где находятся библиотеки от Maven, для этого запускаем следующее:
mvn -Declipse.workspace=<path-to-eclipse-workspace>
Собственно что бы упростить процедуру создания скелета плагина в папке workspace от Eclipse я создал файл atchetype.sh в который и поместил нужные команды. Далее завел переменные $MY_PACKAGE и $MY_PLUGIN в которые нужно вписать название пакета и имя создаваемого плагина и добавил команды создания проекта для IDE:
#!/bin/sh
if [ -z "$1" ]; then
echo "archetype <package_name> <plugin_name>"
else
MY_PACKAGE=$1
fi
if [ -z "$2" ]; then
echo "archetype <package_name> <plugin_name>"
else
MY_PLUGIN=$2
fi
mvn archetype:create \
-DarchetypeGroupId=com.atlassian.maven.archetypes \
-DarchetypeArtifactId=jira-plugin-archetype \
-DarchetypeVersion=15 \
-DremoteRepositories=https://maven.atlassian.com/repository/public/ \
-DgroupId=${MY_PACKAGE} -DartifactId=${MY_PLUGIN}
cd ./${MY_PLUGIN}
mvn eclipse:eclipse

Теперь просто запускаем ./archetype.sh <имя пакета> <имя плагина> и вся структура будет создана. Если запускается в первый раз, то при этом скачается несколько десятков мелких файлов – jar-библиотек, которые потребуются в стандартных зависимостях разрабатываемого плагина для JIRA или Confluence.

4. Начинается разработка


Потом просто импортируем готовый проект в Eclipse. И можно начинать продуктивно программировать, что бы в будущем создать новый нужный плагин для JIRA или Confluence.:)

Добавление библиотек в хранилище Maven


В некоторых случаях потребуется добавить библиотеку в хранилище Maven, например javax.mail не скачивается автоматически, т.к. требуется согласие с лицензией. В случае с javax.mail-1.3.2: переходим в папку: $HOME/.m2/repository/javax/mail/mail/1.3.2 в файле mail-1.3.2.pom находим ссылку, откуда скачать требуемую библиотеку и скачиваем архив с ней. В архиве документация и нужная нам mail.jar. Дальше ее добавляем в хранилище командой: mvn install: install-file -DgroupId=javax.mail -DartifactId=mail -Dversion=1.3.2 -Dpackaging=jar -Dfile=<путь до библиотеки>mail.jar. Для других библиотек потребуется поменять данные в ключах -DgroupId, -DartifactId, -Dversion.

Сборка плагина


После того как плагин был написан, перед установкой, его потребуется собрать: mvn source: jar install -Dmaven.test.skip=true запускаем в папке с проектом и получаем jar в папке target. Сопируем получившийся jar в WEB_INF/lib и перезапускаем tomcat. Если все в порядке, то в разделе Администрирование→System→Plugins можно будет найти созданный плагин. В случае возможных допущеных ошибок: смотрим логи и исправляемся.
Tags:jiraconfluencejavaplugindevelopmentразработка
Hubs: Lumber room
+2
1.4k 8
Comments 4

Popular right now

Senior Jira Administrator
from 2,500 to 3,000 €EXANTEМоскваRemote job
Jira/YouTrack Administrator
from 80,000 to 120,000 ₽deeplayНовосибирскRemote job
Java-разработчик Middle/Senior
from 100,000 ₽WMT GroupRemote job
Java Developer
from 120,000 to 250,000 ₽YLabRemote job

Top of the last 24 hours