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

时间:2016-12-02 09:54:43

标签: maven jira jira-plugin atlassian-plugin-sdk

我正在使用最新版本的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包。
  7. 我的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>
    

    谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

1.0.0-msbuild2-final

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