无法启动插件:无法解析167.0:缺少需求[167.0] osgi.wiring.package; (osgi.wiring.package = com.atlassian.inject)

问题描述 投票:2回答:1

我正在使用最新版本的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-run命令之前,几乎每次都使用atlas-mvn clean。
  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>

谢谢。

maven jira jira-plugin atlassian-plugin-sdk
1个回答
1
投票

看起来我找到了一种方法来解决它,虽然我不确定它是否是一个很好的解决方案。它与导入某些包有关;我不确定它背后的逻辑,但似乎已经摆脱了任何和所有的bundle错误,导致我的插件在启动我的本地环境时完美加载。

对于那些好奇的人,我改变了我:

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

<Import-Package>
          org.springframework.osgi.*;resolution:="optional",
          org.eclipse.gemini.blueprint.*;resolution:="optional",
          *;version="0";resolution:=optional 
</Import-Package>
© www.soinside.com 2019 - 2024. All rights reserved.