HelloWorld példa
Az Atlassian fejlesztői honlapján részletes leírást találhatunk arról, hogy hogyan kezdjünk neki a plugin fejlesztésnek. Ha már van telepített Atlassian Plugin SDK-nk, akkor ugorhatunk a HelloWorld plugin példára, de ha most kezdjük, akkor érdemes végigmenni a részletes leíráson.
Kezdeti lépések:
A fejlesztéshez telepítenünk kell a JDK-t, az SDK-t és ajánlatos az Eclipse IDE-t is. A fenti telepítési leírás Linuxra készült, de mivel én Windows alatt fogok fejleszteni, így lesznek apró eltérések. Az SDK telepítése közben végig szükség lesz internetkapcsolatra, mert az alap telepítő csomag mellett még kb 120 MB-ot le fog tölteni. A teljes projekt 3.8 (SDK + projekt) + 1.2 GB (maven repository) helyet igényel és legalább 2 GB RAM-ot. A fenti 3 lépés egyenként 1-2 órát vesz igénybe (internetkapcsolattól és géptől függően), de a következő lista segíthet az esetlegesen felmerülő hibákon túljutni és a lépésekhez szükséges időt csökkenteni:
- a Maven-t az Eclipsehez a megadott helyett itt érdemes keresni: http://download.jboss.org/jbosstools/updates/m2eclipse-wtp
- a JIRA build és Tomcat indítás eleinte 4 percet, később 2 percet vesz igénybe, ezt kihagyjatjuk a FastDev-vel (a DevelpoerTool segítségével JIRA-ból újrafordíthatjuk a változásokat, ami csak 20-40 mp-et igényel)
- ha a FastDev nem fordítja be automatikusan a változásokat (több percig dolgozik), akkor érdemes kikapcsolni a CLI-t (<useFastdevCli>false</useFastdevCli> - https://answers.atlassian.com/questions/108577/fastdev-in-atlassian-sdk-4-1)
- a tesztek futtatásánál (pl: atlas-run -DskipTests=true) a paraméterben átadott "=" jelet a Windows 7 elválasztóként kezeli, így ehhez az érintett 2 db *.bat fájlban ezt kezelni kell (atlas-run és atlas-integration-test).
- ha a megadott 2990-es porton nem nyitható meg a JIRA vagy más portot látunk a logban, akkor gyanakodjunk, hogy egy másik ablakban fut egy másik példány (érdemes a telepítési leírásban a cmd-nek megfelelően egy atlas-run indítási parancsot is létrehoznunk az Eclipse-ben)
Az eredmény
A HelloWorld projekt létrehozása (atlas-create-jira-plugin) és módosítása (atlas-create-jira-plugin-module) után a lenti eredményt kapjuk (Web Section és Web Item):
További Plugin Module-ok: Component Import, Component, Component Tab Panel, Custom Field, Custom Field Searcher, Downloadable Plugin Resource, Gadget Plugin Module, Issue Tab Panel, Keyboard Shortcut, JQL Function, Licensing API Support, Module Type, Project Tab Panel, REST Plugin Module, RPC Endpoint Plugin, Report, Search Request View, Servlet Context Listener, Servlet Context Parameter, Servlet Filter, Servlet, Template Context Item, User Format, Version Tab Panel, Web Item, Web Panel, Web Panel Renderer, Web Resource, Web Resource Transformer, Web Section, Webwork Plugin, Workflow Condition, Workflow Post Function, Workflow Validator
A projekt főbb fájljai
A fenti demo projekt a lenti fájlokból épül fel (+ a teszt fájlok és lib-ek). A kód egy egyszerű interfészből, egy getName()-et implementáló osztályból, egy nyelvi részeket tartalmazó properties-ből és a menüpontot megvalósító xml-ből áll (A projekt egyik meghatározó fájlja a pom.xml, de azt később - a Maven-nel együtt - nézzem meg).
atlassian-plugin.xml
<?xml version="1.0" encoding="UTF-8"?>${project.description} ${project.version} images/pluginIcon.pngimages/pluginLogo.png com.atlassian.auiplugin:ajs helloworld com.atlassian.tutorial.helloworld.MyPluginComponent The mySection Plugin The Client Sites Plugin deleteMeMolnár László: Java developer / Scrum Master http://www.lacimol.hu
MyPluginComponent.java
package com.atlassian.tutorial.helloworld; public interface MyPluginComponent { String getName(); }
MyPluginComponentImpl.java
package com.atlassian.tutorial.helloworld; import com.atlassian.sal.api.ApplicationProperties; public class MyPluginComponentImpl implements MyPluginComponent { private final ApplicationProperties applicationProperties; public MyPluginComponentImpl(ApplicationProperties applicationProperties) { this.applicationProperties = applicationProperties; } public String getName() { if(null != applicationProperties) { return "myComponent:" + applicationProperties.getDisplayName(); } return "myComponent"; } }
helloworld.properties
#put any key/value pairs here my.plugin.name=MyPlugin my-section.label=mySection my-section.name=mySection my-section.description=The mySection Plugin client-sites.label=Client Sites client-sites.name=Client Sites client-sites.description=The Client Sites Plugin lacimol.label=Molnár László lacimol.name=lacimol.hu lacimol.description=Molnár László: Java developer / Scrum Master
Konfigurációs fájlok
A Atlassion fejlesztői leírás végén a konfigurációs fájlok paraméterezhetőségéről, a pom.xml beállításairól, a kódolási konvenciókról, a további plugin modulokról és fejlesztői eszközökről olvashatunk. Ezek inkább lexikális leírásként és dokumentációként olvasandók.
A fentiek alapján látható, hogy viszonylag egyszerűen (főként paraméterezéssel) létrehozható egy egyszerű plugin a JIRA-hoz. A következő bejegyzésben a Maven és a pom.xml működését nézem meg.