Как включить Java-клиент JIRA REST в плагин JIRA?

Я новичок в разработке плагинов JIRA, поэтому мой вопрос может показаться слишком простым, но, пожалуйста, проявите терпение и внимательно прочтите его, потому что я перепробовал так много вещей, найденных в Интернете, и ни одно из них не сработало. Вот почему я спрашиваю об этом здесь, как о моей последней надежде.

Я хотел бы использовать JIRA REST Java Client в своем плагине JIRA. Прямые инструкции предлагают добавить в мой pom.xml следующее, и все должно работать:

<dependency>
    <groupId>com.atlassian.jira</groupId>
    <artifactId>jira-rest-java-client</artifactId>
    <version>1.1-m02</version>
</dependency>

но, конечно, это не так, потому что в Eclipse все отображается нормально (без ошибок / предупреждений) после atlas-mvn eclipse:eclipse, но когда я запускаю JIRA с atlas-run или atlas-debug, как только я пытаюсь получить доступ к строке:

JerseyJiraRestClientFactory f = new JerseyJiraRestClientFactory();

Я получаю исключение java.lang.NoClassDefFoundError: com/atlassian/jira/rest/client/internal/jersey/JerseyJiraRestClientFactory

Я повторяю, в Eclipse все показывает нормально, без единой отметки предупреждения / ошибки, но во время выполнения я получаю это исключение.

Мне было рекомендовано добавить все необходимые зависимости в мой pom.xml, который Я сделал это, но потом я не смог даже запустить JIRA в обычном режиме из-за большого количества исключений (при необходимости предоставлю их).

Итак, простой вопрос: как это сделать правильно? Более того, есть ли у кого-нибудь простой РАБОЧИЙ пример файла pom.xml + src /, который нужно предоставить, чтобы я мог понять, где я ошибаюсь?

Большое спасибо заранее.


person Mladen B.    schedule 26.07.2013    source источник


Ответы (2)


Как упоминалось в клиентский репозиторий jrjc-example / jrjc-example / > текущая версия JRJC - 2.0, и в предоставленном файле pom.xml была упомянута важная вещь:

«JIRA уже предоставляет ряд зависимостей, которые необходимы JRJC. Нам нужно исключить их из зависимости JRJC, поскольку мы не хотим упаковывать их внутри плагина».

Итак, решение состоит в том, чтобы исключить эти вещи из зависимости JRJC:

<dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client</artifactId>
        <version>2.0.0-m2</version>
        <!--
        JIRA will already provide a number of dependencies that JRJC needs. We need to exclude them from the
        JRJC dependency as we don't want to package them up inside the plugin.
        -->
        <exclusions>
                <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.atlassian.sal</groupId>
                        <artifactId>sal-api</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.atlassian.event</groupId>
                        <artifactId>atlassian-event</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                </exclusion>
        </exclusions>
</dependency>
person Mladen B.    schedule 02.08.2013

Это может быть не прямым ответом на ваш вопрос, но может дать вам некоторые подсказки в правильном направлении.

JIRA владеет обоюдоострым мечом, контейнером OSGI. Вещи, которые выглядят нормально при разработке в вашей локальной среде, бомба при развертывании. Возможно, вам повезет отследить вещи с точки зрения OSGI. Был там, несколько раз горел. HTH.

person JVXR    schedule 08.08.2013