JIRA forráskód
A 10$-os licence megvásárlásával legtöbb esetben az adott termék vagy plugin forráskódját is megkapjuk. A https://my.atlassian.com -ról a forrás letölthető és (windows alatt) a kicsomagolt mappa gyökerében lévő build.bat-tal lefordíthatjuk, amiből a végén telepíthető war fájlt kapunk. Ez az elmélet, de lássuk a gyakorlatot.
Build
A build során a Maven biztosítja, hogy ne kelljen tucatnyi jar fájlt csatolnunk a forráshoz, ezeket inkább majd ő letöltögeti az Atlassian Maven repository-ból a helyi repository-ba. Ennek helye alapértelmezetten a localrepo könyvtárra van beállítva a mellékelt batch fájlban, amit érdemes a saját (jó esetben a korábban már a JIRA pluginekhez használt) repo-nkra állítanunk (build.bat --> c:\Users\[USERNAME]\.m2\repository), így a kb 1 GB letöltés egy részét megúszhatjuk.
Hibák és megoldásaik
Ha nem olvastuk a build-elési leírást, akkor rögtön hibát kapunk (Unable to find resource 'jta:jta:pom:1.0.1' in repository atlassian-proxy (https://m2proxy.atlassian.com/repository/public)), mert néhány jar fájl nem letölthető a repo-ból, így azokat magunknak kell telepítenünk. A fenti linken jelenleg a 6-os JIRA-hoz szükséges jarokat sorolja, az 5-öshöz nekem ezekre volt szükségem (JIRA 5.2.8):
- jta-1.0.1.jar
- jndi-1.2.1.jar
- activation-1.0.1.jar
- jms-1.1.jar
- jmxri és jmxtools-1.2.1.jar
XMLInputFactory exception:
Bizonyos JDK verzókból hiányozhat a StAX implementáció (6 előtti) vagy azok egyes metódusai (6u12: newFactory()), ezért érdemes a legfrissebb JDK-t használnunk (itt a 6-oson belül a jdk-6u45-windows-i586-ot).
ResourceDocletJSON (error has occurred in JavaDocs report generation):
Az AMPS által hívott start() metódusnak rosszul adja át az "-output" paramétert Windows alatt (az elválasztó jeleket rosszul kezeli), így a fenti osztály nem találja a fájlt: "java.io.FileNotFoundException: F:jiratlassian-jira-5.2.8-sourcejira-admin-helper-plugin argetclasses". Helyesen: "F:\jira\atlassian-jira-5.2.8-source\..." lenne. A legegyszerűbb javítási módszer, ha kikommentezzük a két érintett modult és utólag telepítjük őket (jira-admin-helper és jira-welcome).
A hibát már a JIRA-ban is javították, de csak az AMPS 3.9-től felfelé, így az 5.2.8-asban használt 3.8-as még hibás. A kikommentezés helyett átírhatjuk ResourceDocletJSON.java-t a csatolt atlassian-rest-doclet 2.7.1-es verzióban és ehhez hozzáigazítva a build.bat-ot és a pom.xml-eket, végigfut hiba nélkül a build. A bemeneti paramétereknél az output hibás elérési utat ad, de a classpath jót, és utóbbi első eleme maga a keresett út. A módosítás csak egy ideiglenes megoldás, de a buildhez használható.
ResourceDocletJSON.java
public class ResourceDocletJSON { ... private static final String OPTION_OUTPUT = "-output"; private static final String OPTION_CLASSPATH = "-classpath"; ... public static boolean start( RootDoc root ) { // final String output = getOptionArg( root.options(), OPTION_OUTPUT ); final String classpath = getOptionArg( root.options(), OPTION_CLASSPATH ); final String output = classpath.split(";")[0] + "/resourcedoc.xml"; ... } ... }
jira-admin-helper-plugin: pom.xml
com.atlassian.plugins.rest atlassian-rest-doclet 2.7.1
jira-welcome-plugin (a belső jira-welcome-plugin mappában): pom.xml
com.atlassian.plugins.rest atlassian-rest-common 2.7.1 provided com.atlassian.plugins.rest atlassian-rest-doclet 2.7.1
build.bat
REM call mvn2.bat clean install -f "jira-welcome-plugin/pom.xml" -pl jira-welcome-plugin -Dmaven.test.skip -s %SETTINGSFILE% -Dmaven.repo.local=%cd%\%LOCALREPO% %* call mvn2.bat clean install -f "jira-welcome-plugin/jira-welcome-plugin/pom.xml" -Dmaven.test.skip -s %SETTINGSFILE% -Dmaven.repo.local=%cd%\%LOCALREPO% %*