Добавление зависимости для плагина Jira - PullRequest
0 голосов
/ 04 июля 2018

С SDK 6.3.10 я пытаюсь разработать плагин для Jira 7.x.

Этот плагин должен использовать внешнюю Java-зависимость с именем "svnkit". Я добавил это как зависимость в pom (этого должно быть достаточно, если я правильно понял https://developer.atlassian.com/server/framework/atlassian-sdk/managing-dependencies/):

<dependency>
  <groupId>com.svnkit</groupId>
  <artifactId>svnkit</artifactId>
  <version>1.1.0</version>
</dependency>

Теперь я получаю сообщение в журналах atlas-run:

[INFO] [talledLocalContainer] 2018-07-04 16:50:55,310 http-nio-2990-exec-3 ERROR anonymous 1010x2x1 - 0:0:0:0:0:0:0:1 /secure/DemoAction!default.jspa [c.a.j.web
.dispatcher.JiraWebworkActionDispatcher] Exception thrown from action 'DemoAction!default', returning 404
[INFO] [talledLocalContainer] WebworkConfigurationNotFoundException{class=class webwork.config.XMLActionConfiguration, message='No such view mapping', name='Dem
oAction.actionRoles.actionRoles'}

Плагин сам возвращает страницу 404 в браузере. Без svnkit все работает в браузере. Обратите внимание, что я не использовал svnkit в коде Java.

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

1 Ответ

0 голосов
/ 07 июля 2018

Во-первых, вам необходимо точно знать, где и когда будет использоваться библиотека svnkit, и какова цель этой библиотеки в вашем проекте. С информацией, которую вы предоставляете, я могу лишь отдаленно направить вас к правильному решению.

В мире JIRA / OSGI у вас есть два основных варианта:

  1. Вы компилируете библиотеку вместе с вашим кодом так, чтобы байт-код вашего проекта и байт-код библиотеки, которую вы использовали, были упакованы вместе в файл JAR в результате atlas-package (mvn package). Я пропустил любые другие ресурсы для ясности.
  2. Вы компилируете свой проект, но окончательный JAR-файл содержит только байт-код вашего проекта плюс явную информацию о том, что зависимая библиотека уже будет присутствовать в среде, в которой был запущен JAR.

В вашем случае, я предполагаю, что svnkit библиотека отсутствует в JIRA, что вы хотите запустить свой плагин / JAR. Это означает, что вы должны предоставить это самостоятельно. Симпатичный / рекомендуемый способ:

  1. Подготовка svnkit к готовности OSGI, JAR должен быть действительным пакетом OSGI. (Вы можете найти такой пакет уже подготовленным где-нибудь в репозитории Atlassian Maven или где-то в Интернете)
  2. В вашем pom.xml добавьте эту зависимость с областью действия provided: например ::

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
        <scope>provided</scope>
    </dependency>
    
  3. Добавить конфигурацию для maven-amps-plugin (maven-jira-plugin) для упаковки svnkit в качестве зависимости пакета OSGI

    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-jira-plugin</artifactId>
                <version>${amps.version}</version>
                <configuration>
                    <extractDependencies>false</extractDependencies>
                    <pluginDependencies>
                        <pluginDependency>
                            <groupId>...</groupId>
                            <artifactId>...</artifactId>
                        </pluginDependency>
                    </pluginDependencies>
                ...
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    Таким образом, atlas-package создаст также файл OBR, который будет содержать ваш проект JAR plus svnkit bundle Смотрите также: https://developer.atlassian.com/server/framework/atlassian-sdk/bundling-extra-dependencies-in-an-obr/

И имейте в виду, что это:

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
    </dependency>

означает точно так же, как:

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
        <scope>compile</scope>
    </dependency>

, что означает, что svnkit будет включено в ваш JAR-файл прямо или как суб-JAR (JAR в JAR)

Ваши журналы, с другой стороны, указывают на то, что вы неправильно настроили DemoAction. Было бы лучше, если бы вы предоставили pom.xml вместе с atlassian-plugin.xml, чтобы мы лучше поняли вашу проблему.

...