Java

Jiraプラグインを作る その1 – 空のプラグインプロジェクト作成とデプロイ #jira

ありそうでないらしい、Jiraのアップデート状況をTwitterで通知するプラグインが欲しいのでプラグインSDKを試してみました。

英語ではしっかりとドキュメントがあるのですが日本語リソースはあまりないと思うので簡単にメモしておきます。

1. Plugin SDKをダウンロード
Atlassian製品のプラグインは全てmavenベースの統一された開発環境が提供されています。まず以下のサイトより atlassian-plugin-sdk-X.X.X.tar.gz をダウンロードします。
Developing your Plugin using the Atlassian Plugin SDK – Atlassian Developer Network – Atlassian Documentation – Confluence

2. 空のプラグインプロジェクトを作成
atlassian-plugin-sdk-X.X.X.tar.gz を展開すると bin ディレクトリがあります。
以下の様に atlas-create-[製品名]-plugin コマンドを叩き、プラグインのgroupIdやartifactIdを指定すると空のプラグインプロジェクトを作成できます。

$ cd atlassian-plugin-sdk-3.3.4/bin 
$ ls
atlas-clean atlas-help
atlas-clean.bat atlas-help.bat
atlas-cli atlas-install-plugin
atlas-cli.bat atlas-install-plugin.bat
atlas-clover atlas-integration-test
atlas-clover.bat atlas-integration-test.bat
atlas-compile atlas-mvn
atlas-compile.bat atlas-mvn.bat
atlas-create-bamboo-plugin atlas-package
atlas-create-bamboo-plugin.bat atlas-package.bat
atlas-create-confluence-plugin atlas-release
atlas-create-confluence-plugin.bat atlas-release-rollback
atlas-create-crowd-plugin atlas-release-rollback.bat
atlas-create-crowd-plugin.bat atlas-release.bat
atlas-create-fecru-plugin atlas-ruin
atlas-create-fecru-plugin.bat atlas-ruin.bat
atlas-create-home-zip atlas-run
atlas-create-home-zip.bat atlas-run-standalone
atlas-create-jira-plugin atlas-run-standalone.bat
atlas-create-jira-plugin.bat atlas-run.bat
atlas-create-refapp-plugin atlas-unit-test
atlas-create-refapp-plugin.bat atlas-unit-test.bat
atlas-debug atlas-version
atlas-debug.bat atlas-version.bat
$ ./atlas-create-jira-plugin
Executing: /Users/yusukey/Downloads/atlassian-plugin-sdk-3.3.4/apache-maven/bin/mvn com.atlassian.maven.plugins:maven-jira-plugin:3.3.4:create
[INFO] Scanning for projects...
Downloading: https://m2proxy.atlassian.com/repository/public/com/atlassian/maven/plugins/maven-jira-plugin/3.3.4/maven-jira-plugin-3.3.4.pom
1K downloaded (maven-jira-plugin-3.3.4.pom)
.
.
.
[INFO] Generating project in Interactive mode
[INFO] Archetype repository missing. Using the one from [com.atlassian.maven.archetypes:jira-plugin-archetype:5 -> https://maven.atlassian.com/public] found in catalog internal
Define value for groupId: : org.twitter4j
Define value for artifactId: : jira-twitter
Define value for version: 1.0-SNAPSHOT: : 1.0-SNAPSHOT
Define value for package: org.twitter4j: :
Confirm properties configuration:
groupId: org.twitter4j
artifactId: jira-twitter
version: 1.0-SNAPSHOT
package: org.twitter4j
Y: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: jira-plugin-archetype:3.3.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: org.twitter4j
[INFO] Parameter: packageName, Value: org.twitter4j
[INFO] Parameter: package, Value: org.twitter4j
[INFO] Parameter: artifactId, Value: jira-twitter
[INFO] Parameter: basedir, Value: /Users/yusukey/Downloads/atlassian-plugin-sdk-3.3.4/bin
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: /Users/yusukey/Downloads/atlassian-plugin-sdk-3.3.4/bin/jira-twitter
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 56 seconds
[INFO] Finished at: Sun Jul 17 01:26:43 JST 2011
[INFO] Final Memory: 32M/86M
[INFO] ------------------------------------------------------------------------

3. プラグインをビルドする
生成されたpom.xml には Central Repository に存在しない artifact への dependency があり、素で mvn を叩いてもビルド出来ません。手動でリポジトリを追加するなどすればビルドできないこともないと思いますが、便利なことにプラグインSDKに含まれているバージョンのmavenを使えば一発でビルドできます。

$ cd jira-twitter
$ ../atlas-mvn package
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building jira-twitter
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------------
[INFO] [jira:copy-bundled-dependencies]
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.twitter4j.MyPluginTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.026 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] [jira:validate-manifest]
[INFO] No manifest found or validation skip flag specified, skipping validation
[INFO] [jira:jar]
[INFO] [jar:jar]
[INFO] Building jar: /Users/yusukey/Downloads/atlassian-plugin-sdk-3.3.4/bin/jira-twitter/target/jira-twitter-1.0-SNAPSHOT.jar
[INFO] [jira:generate-obr-artifact]
[INFO] Skipping OBR generation... no OSGi bundle manifest instructions found in pom.xml
[INFO] [jira:test-jar]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35 seconds
[INFO] Finished at: Sun Jul 17 23:13:39 JST 2011
[INFO] Final Memory: 84M/123M
[INFO] ------------------------------------------------------------------------

IntelliJではプロジェクトのMaven home directoryにプラグインSDKに含まれているmavenを指定すればok。Eclipseの設定方法は知りません。

4. テスト環境を起動する
プラグインをテストするのは簡単。atlas-run コマンドを叩くだけ。初回はテスト環境用のバイナリを色々とダウンロードするのでちょっと時間がかかります。

$ ../atlas-run
[INFO] Scanning for projects...
Downloading: https://m2proxy.atlassian.com/repository/public/com/atlassian/maven/plugins/maven-amps-dispatcher-plugin/3.3.4/maven-amps-dispatcher-plugin-3.3.4.pom
977b downloaded (maven-amps-dispatcher-plugin-3.3.4.pom)
Downloading: https://m2proxy.atlassian.com/repository/public/com/atlassian/maven/plugins/maven-amps-dispatcher-plugin/3.3.4/maven-amps-dispatcher-plugin-3.3.4.jar
9K downloaded (maven-amps-dispatcher-plugin-3.3.4.jar)
.
.
.
[WARNING] [talledLocalContainer] INFO: Server startup in 51329 ms
[INFO] [talledLocalContainer] Tomcat 6.x started on port [2990]
[INFO] jira started successfully and available at http://localhost:2990/jira
[INFO] Type CTRL-C to exit


起動したところ。
Unable to retrieve gadget xml. HTTP error 404 というOpenSocial臭のするエラーが出ているけれどもとりあえずプラグイン開発には関係ないので無視。
admin/adminでログインできます。

5. プラグインを確認
Administration → Plugins よりプラグインがインストールされていることを確認できます。

atlas-create-jira-plugin スクリプトは何にもしない空のプラグインを作成するので今のところプラグインはなにもしてくれませんが、ひとまず開発する環境が整ったことは確認できました。