2016-12-02 104 views
2

我正在使用最新版本的atlassian SDK为JIRA开发插件。我已经写了很大一部分代码,并且向我的项目的pom.xml文件中添加了一些所需的依赖关系(请参见下文)。无法启动插件:无法解析167.0:缺少需求[167.0] osgi.wiring.package; (osgi.wiring.package = com.atlassian.inject)

不幸的是,一旦运行图谱运行,开始我的本地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> 

谢谢。

+0

你问对[Atlassian的答案](https://answers.atlassian.com/)?我想有人更可能在那边帮助你。 –

+0

我也会试着在那边问,但从我所看到的,那里还有很多类似的问题没有得到答案。 – BigAngryCow

回答

1

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

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

<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> 
相关问题