3

アトラシアン SDK の最新バージョンを使用して、JIRA のプラグインを開発しています。コードの大部分は既に作成しており、プロジェクトの pom.xml ファイルに必要ないくつかの依存関係を追加しています (以下を参照)。

残念ながら、ローカル JIRA 環境を開始するために atlas-run を実行すると、次のエラーが原因でプラグインのロードに失敗します。

'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>

ありがとうございました。

4

1 に答える 1

3

それが良い修正であるかどうかはわかりませんが、修正する方法を見つけたようです。特定のパッケージのインポートと関係があります。その背後にあるロジックはよくわかりませんが、すべてのバンドル エラーが取り除かれ、ローカル環境の起動時にプラグインが完全に読み込まれるようになったようです。

好奇心旺盛な人のために、次のように変更しました。

<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>
于 2016-12-02T14:57:59.900 に答える