Невозможно запустить плагин: невозможно разрешить 167.0: отсутствует требование [167.0] osgi.wiring.package; (osgi.wiring.package=com.atlassian.inject)

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

К сожалению, при запуске atlas-run для запуска моей локальной среды JIRA не удается загрузить мой плагин из-за следующей ошибки:

'com.COMPANY.COMPANY-worklog-plugin' - 'COMPANY-worklog-plugin'  failed to load.
    [INFO] [talledLocalContainer]  Cannot start plugin: com.COMPANY.COMPANY-worklog-plugin
    [INFO] [talledLocalContainer] Unresolved constraint in bundle com.COMPANY.COMPANY-plugin [167]: Unable to resolve 167.0: missing requirement [167.0] osgi.wiring.package; (osgi.wiring.package=com.atlassian.inject)
    [INFO] [talledLocalContainer]
    [INFO] [talledLocalContainer]It was loaded from C:\Project\COMPANY-worklog-plugin\target\jira\home\plugins\installed-plugins\COMPANY-worklog-plugin-1.0.0-SNAPSHOT.jar

Уже несколько дней меня мучают одни и те же ошибки, в том числе следующие: (которые мне удалось исправить, добавив зависимость в мой POM):

[INFO] [talledLocalContainer]Unresolved constraint in bundle com.maxxton.worklog-plugin [167]: Unable to resolve 167.0: missing requirement [167.0] osgi.wiring.package; (osgi.wiring.package=bsh)

Я пробовал следующие вещи:

  1. Повторное создание моего плагина с помощью Atlassian Framework, который работал, пока я не добавил свои зависимости
  2. Удаление и повторное добавление моих зависимостей, чтобы увидеть, где лежит ошибка. Не удалось выяснить, есть ли неисправная зависимость или нет.
  3. Изменение областей моих внешних зависимостей (при условии-> компиляция и обратно, тестирование при необходимости.)
  4. Используйте atlas-mvn clean почти каждый раз перед запуском моей команды atlas-run.
  5. Активация моего плагина в jira (ошибка тайм-аута)
  6. Перед публикацией изучил этот вопрос. Я особенно растерялся, потому что, похоже, это стандартный пакет Atlassian, который вызывает проблему.

Мой POM выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.maxxton</groupId>
  <artifactId>maxxton-worklog-plugin</artifactId>
  <version>1.0.0-SNAPSHOT</version>

  <organization>
    <name>Example Company</name>
    <url>http://www.example.com/</url>
  </organization>

  <name>maxxton-worklog-plugin</name>
  <description>This is the com.maxxton:maxxton-worklog-plugin plugin for Atlassian JIRA.</description>
  <packaging>atlassian-plugin</packaging>

  <dependencies>
    <dependency>
      <groupId>com.atlassian.jira</groupId>
      <artifactId>jira-api</artifactId>
      <version>${jira.version}</version>
    </dependency>
    <!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
    <!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->

    <!--<dependency>-->
        <!--<groupId>com.atlassian.jira</groupId>-->
        <!--<artifactId>jira-core</artifactId>-->
        <!--<version>${jira.version}</version>-->
        <!--&lt;!&ndash;<scope>provided</scope>&ndash;&gt;-->
        <!--<scope>compile</scope>-->
    <!--</dependency>-->

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.atlassian.plugin</groupId>
      <artifactId>atlassian-spring-scanner-annotation</artifactId>
      <version>${atlassian.spring.scanner.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.atlassian.plugin</groupId>
      <artifactId>atlassian-spring-scanner-runtime</artifactId>
      <version>${atlassian.spring.scanner.version}</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.beanshell</groupId>
      <artifactId>bsh</artifactId>
      <version>2.0b4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.3.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpasyncclient</artifactId>
      <version>4.0.2</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpmime</artifactId>
      <version>4.3.6</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20140107</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>com.mashape.unirest</groupId>
      <artifactId>unirest-java</artifactId>
      <version>1.4.9</version>
      <scope>compile</scope>
    </dependency>

    <!-- WIRED TEST RUNNER DEPENDENCIES -->
    <dependency>
      <groupId>com.atlassian.plugins</groupId>
      <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
      <version>${plugin.testrunner.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>jsr311-api</artifactId>
      <version>1.1.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.2.2-atlassian-1</version>
      <scope>compile</scope>
    </dependency>


    <!-- Uncomment to use TestKit in your project. Details at https://bitbucket.org/atlassian/jira-testkit -->
    <!-- You can read more about TestKit at https://developer.atlassian.com/display/JIRADEV/Plugin+Tutorial+-+Smarter+integration+testing+with+TestKit
-->
    <!--
    <dependency>
      <groupId>com.atlassian.jira.tests</groupId>
      <artifactId>jira-testkit-client</artifactId>
      <version>${testkit.version}</version>
      <scope>test</scope>
    </dependency>
    -->   </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>com.atlassian.maven.plugins</groupId>
        <artifactId>maven-jira-plugin</artifactId>
        <version>${amps.version}</version>
        <extensions>true</extensions>
        <configuration>
          <productVersion>${jira.version}</productVersion>
          <productDataVersion>${jira.version}</productDataVersion>
          <!-- Uncomment to install TestKit backdoor in JIRA. -->
          <!--
          <pluginArtifacts>
            <pluginArtifact>
              <groupId>com.atlassian.jira.tests</groupId>
              <artifactId>jira-testkit-plugin</artifactId>
              <version>${testkit.version}</version>
            </pluginArtifact>
          </pluginArtifacts>
          -->
          <enableQuickReload>true</enableQuickReload>
          <enableFastdev>false</enableFastdev>

          <!-- See here for an explanation of default instructions: -->
          <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins
-->
          <instructions>
            <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>

            <!-- Add package to export here -->
            <Export-Package>
              com.maxxton.api,
            </Export-Package>

            <!-- Add package import here -->
            <Import-Package>
              org.springframework.osgi.*;resolution:="optional",
              org.eclipse.gemini.blueprint.*;resolution:="optional",
              *
            </Import-Package>

            <!-- Ensure plugin is spring powered -->
            <Spring-Context>*</Spring-Context>
          </instructions>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.atlassian.plugin</groupId>
        <artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
        <version>${atlassian.spring.scanner.version}</version>
        <executions>
          <execution>
            <goals>
              <goal>atlassian-spring-scanner</goal>
            </goals>
            <phase>process-classes</phase>
          </execution>
        </executions>
        <configuration>
          <scannedDependencies>
            <dependency>
              <groupId>com.atlassian.plugin</groupId>
              <artifactId>atlassian-spring-scanner-external-jar</artifactId>
            </dependency>
          </scannedDependencies>
          <verbose>false</verbose>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>   </build>

  <properties>
    <jira.version>7.2.4</jira.version>
    <amps.version>6.2.6</amps.version>
    <plugin.testrunner.version>1.2.3</plugin.testrunner.version>
    <atlassian.spring.scanner.version>1.2.13</atlassian.spring.scanner.version>
    <!-- This key is used to keep the consistency between the key in atlassian-plugin.xml and the key to generate bundle. -->
    <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
    <!-- TestKit version 6.x for JIRA 6.x -->
    <testkit.version>6.3.11</testkit.version>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>   </properties>

</project>

Спасибо.


person BigAngryCow    schedule 02.12.2016    source источник
comment
Вы спрашивали в Atlassian Answers? Я думаю, кто-то, скорее всего, поможет вам там.   -  person Martin Verjans    schedule 02.12.2016
comment
Я попробую спросить и там, но из того, что я видел, там было много подобных вопросов, которые остались без ответа.   -  person BigAngryCow    schedule 02.12.2016


Ответы (1)


Похоже, я нашел способ исправить это, хотя я не уверен, что это хорошее решение. Это как-то связано с импортом определенных пакетов; Я не уверен в логике, стоящей за этим, но, похоже, он избавился от всех и всех ошибок пакета, в результате чего мой плагин отлично загружался при запуске моей локальной среды.

Для тех, кому интересно, я изменил свой с:

<Import-Package>
          org.springframework.osgi.*;resolution:="optional",
          org.eclipse.gemini.blueprint.*;resolution:="optional",
          *
</Import-Package>

To

<Import-Package>
          org.springframework.osgi.*;resolution:="optional",
          org.eclipse.gemini.blueprint.*;resolution:="optional",
          *;version="0";resolution:=optional 
</Import-Package>
person BigAngryCow    schedule 02.12.2016