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

    Используя мощный, настраиваемый баг/таск-трекер 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 можно будет найти созданный плагин. В случае возможных допущеных ошибок: смотрим логи и исправляемся.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 4

      0
      А без Мавена это как-нибудь сделать можно?
        0
        В общем то можно (мысль проверить была, но когда увидел сколько он вытаскивает библиотек она отпала), но при этом придется соблюсти все зависимости. При сборке они проводит тестирование в указанном окружении jira или confluence.
        0
        -DgroupId=javax.mail

        Может всё-таки [i]-DgroupId=javax[/i], а то в локальном репозитории создаются подпапки [i]javax/mail/mail[/i].
          0
          При первой синхронизации хранилища, когда maven выкачивает стуктуру библиотек, то он сам создает в таком формате папки. Если посмотреть а файле mail-1.3.2.pom то уже указаны groupId и artifactId, и в этом соответсвии устанавливаем нужную библиотеку. Так что все верно.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое