Jiraのプラグインを開発するときにobrに依存ライブラリをパックする方法

Jira用のプラグインを開発する場合、Jiraにないライブラリを定期的に使用する必要があるため、開発したプラグインと一緒にインストールする必要があります。 Jiraでは、2つの方法でサードパーティライブラリをプラグインにパッケージ化できます。



サードパーティライブラリのコンパイルスコープを指定すると、このライブラリのクラスが開発されたプラグインのjarファイルにパックされます。 これを行うには、pom.xmlファイルに書き込みます。



<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2-atlassian-1</version> <scope>compile</scope> </dependency>
      
      





プラグインをアセンブルして、サードパーティのライブラリjarファイルが、開発されたプラグインのobrファイルの依存関係フォルダーに配置されるようにします。



obrファイルの依存関係フォルダ内の依存ライブラリのパッケージングを段階的に調べます。

obrに追加の依存関係を配置する方法の理論は、 ここにあります



例を考えてみましょう。 単一のgetLibraryMessage関数を持つLibraryServiceサービスを含むメインライブラリ(jira-library)があります。 別のプラグイン(jira-obr)からgetLibraryMessage関数を呼び出します。 結果の値は、j​​ira-obrプラグインのサーブレットに返されます。







jira-library.jarがjira-obr.obrファイルの依存関係フォルダーにあるようにjira-obrをビルドしましょう。 jira-obr.obrをインストールすると、jira-library.jarもインストールされます。



jira-libraryおよびjira-obrプラグインのソースコードは、ここからダウンロードできます。



jira-libraryプラグインを作成する



ターミナルを開き、次のコマンドを実行します。



 atlas-create-jira-plugin-module
      
      





プラグインが作成されると、ターミナルは質問をします。 以下は、それらに対する質問と回答です。



 Define value for groupId: : ru.matveev.alexey.tutorial.library Define value for artifactId: : jira-library Define value for version: 1.0.0-SNAPSHOT: : Define value for package: ru.matveev.alexey.tutorial.library: : Y: : Y
      
      





プラグインを作成したら、LibraryServiceサービスを追加する必要があります。 これを行うには、最初にパッケージru.matveev.alexey.tutorial.library.apiにインターフェース(LibraryService.java)を作成します



 package ru.matveev.alexey.tutorial.library.api; public interface LibraryService { String getLibraryMessage(); }
      
      





次に、パッケージru.matveev.alexey.tutorial.library.implにLibraryServiceインターフェイス(LibraryServiceImpl.java)の実装を作成します。



 package ru.matveev.alexey.tutorial.library.impl; import com.atlassian.plugin.spring.scanner.annotation.export.ExportAsService; import ru.matveev.alexey.tutorial.library.api.LibraryService; import javax.inject.Named; @ExportAsService({LibraryService.class}) @Named public class LibraryServiceImpl implements LibraryService { public String getLibraryMessage() { return "jira-library test message"; } }
      
      





アノテーション@ExportAsServiceは、サービスが他のプラグインで使用できるようにするために必要です。これにより、jira-obrプラグインがそれにアクセスできるようになります。



プラグインをビルドします。



 altas-mvn package
      
      





アセンブリが完了すると、jira-library / targetフォルダーで、アセンブルされたjarファイルを確認できます。



jira-obrプラグインを作成する



ターミナルで次のコマンドを実行します。



 atlas-create-jira-plugin
      
      





質問は次のように回答する必要があります。



 Define value for groupId: : ru.matveev.alexey.tutorial.obr Define value for artifactId: : jira-obr Define value for version: 1.0.0-SNAPSHOT: : Define value for package: ru.matveev.alexey.tutorial.obr: : Y: : Y
      
      





次に、jira-obrフォルダーに移動し、次のコマンドでサーブレットを作成します。



 atlas-create-jira-plugin-module
      
      





このような質問に答えます:



 Choose a number (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34): 21 Enter New Classname MyServlet: : Enter Package Name ru.matveev.alexey.tutorial.obr.servlet: : Show Advanced Setup? (Y/y/N/n) N: : N Add Another Plugin Module? (Y/y/N/n) N: : N
      
      





次に、jir-libraryプラグインの依存関係をpom.xmlファイルに追加します。



 <dependency> <groupId>ru.matveev.alexey.tutorial.library</groupId> <artifactId>jira-library</artifactId> <version>1.0.0-SNAPSHOT</version> <scope>system</scope> <systemPath>/home/alexm/atlasplugin/obr/jira-library/target/jira-library-1.0.0-SNAPSHOT.jar</systemPath> </dependency>
      
      





/home/alexm/atlasplugin/obr/jira-library/target/jira-library-1.0.0-SNAPSHOT.jarをjira-library-1.0.0-SNAPSHOT.jarファイルが配置されているパスに変更する必要があります。



実際の環境では、jira-library-1.0.0-SNAPSHOT.jarファイルはArtifactory、Nexus Repository Manager、または他の同様のプログラムにある必要があります。 この場合、ファイルをファイルシステムに配置して、例を簡略化します。



次に、maven-jira-pluginのpom.xmlで、構成タグに次の行を追加します。



 <pluginDependencies> <pluginDependency> <groupId>ru.matveev.alexey.tutorial.library</groupId> <artifactId>jira-library</artifactId> </pluginDependency> </pluginDependencies>
      
      





Import-Packageタグに追加します。



 ru.matveev.alexey.tutorial.library.api,
      
      





jira-library-1.0.0-SNAPSHOT.jarをjira-obr.obrファイルの依存関係フォルダーに自動的にパックし、jira-libraryプラグインにjira-obrプラグインの依存関係を作成するには、設定が必要です。



次に、MyServlet.javaの内容を変更します。



 package ru.matveev.alexey.tutorial.obr.servlet; import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.matveev.alexey.tutorial.library.api.LibraryService; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Named public class MyServlet extends HttpServlet{ private static final Logger log = LoggerFactory.getLogger(MyServlet.class); private final LibraryService libraryService; @Inject public MyServlet(@ComponentImport LibraryService libraryService) { this.libraryService = libraryService; } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.getWriter().write("<html><body>" + libraryService.getLibraryMessage() + "</body></html>"); } }
      
      





それだけです これで、次のコマンドでJiraを実行できます。



 atlas-run
      
      





Jiraはlocalhost:2990 / jiraで実行されます。 adminでJiraにアクセスする必要があります:adminアカウント、アドオン->アドオンの管理に移動し、jira-obr.obrファイルを選択してjira-obrプラグインをインストールします。 その後、インストールされたプラグインの中にjira-libraryとjira-obrが表示されます。 次のようになります。







次に、 localhostでサーブレットを実行します:2990 / jira / plugins / servlet / myservlet



jira-libraryプラグインからのメッセージがブラウザーに表示されます。







完了:jira-library.jarファイルをjira-obr.obrにパックし、getLibraryMessage関数を正常に呼び出すことができました。



All Articles