mike-neckのブログ

Java or Groovy or Swift or Golang

Gradle Payara plugin(unofiicial)をリリースしました

f:id:mike_neck:20150818084108g:plain

meets

f:id:mike_neck:20150906224045j:plain

GradleのPayaraプラグイン(unofficial)をリリースしました。

org.mikeneck.payara-pluginで詳細な情報が記述されています。

また、レポジトリーはこちらです。

github.com


使い方

プラグインの導入

以下のビルドスクリプトbuild.gradleの先頭に記入します。

すべてのバージョンのGradleで利用可能な記述方法
buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.org.mikeneck:payara-plugin:0.0.2"
  }
}

apply plugin: "org.mikeneck.payara-plugin"
Gradle2.1以上のバージョンで利用可能な記述方法(incubating)
plugins {
  id "org.mikeneck.payara-plugin" version "0.0.2"
}

追加されるタスクなど

このプラグインを導入すると、次のプラグインおよびタスクが追加されます。

  • warプラグインが自動で適用される
  • payaraRunWarタスク - warプラグインの成果物のwarファイルをpayara-microサーバーにデプロイします。
  • payaraStopタスク - payaraRunWarタスクで実行されているpayara-microサーバーを終了します。

設定方法

このプラグインを導入すると、payara{}ブロックが利用可能になります。

payara {
  httpPort 8000  // default 8080
  stopPort 3000 // default 5050
  stopCommand 'STOP-SERVER' // default 'stop'
  demon = false // default false
}

サーバの起動および停止

上記の設定によって、payaraRunWarコマンドで次のpayara-microサーバーが起動されます。

  • payara-microサーバー
    • httpPort 8000

また、payara-microサーバーを停止するために次のコマンドを送るとサーバーが停止します。

$ curl -X POST -d 'STOP-SERVER' http://localhost:5050/

もちろん、payaraStopタスクでもサーバーを停止することが可能です。

$ gradle --daemon payaraStop

制限事項

設定項目にdaemonというバックグラウンドで実行する機能を設けようとしていますが、現在その実装をしていません。

version 0.0.3あたりで対応したいと思っています。

その他の未対応の機能

  • 複数のwarファイルのデプロイ
  • hazelcastなどの機能を用いた複数のpayara-microインスタンス起動にも対応していません。
  • すでにあるwarファイルのデプロイ(カスタムタスクを用いれば可能ですが、パッケージ名がくっそ長いので面倒です)
  • jettyタスクなどでは実装されているファイルの変更を検知して再デプロイする機能
  • warファイルにアーカイブしていないプロジェクトのクラスファイルのデプロイ
  • カスタマイズしたglassfish configの設定
    • データソースのカスタマイズなどができない
    • derbyしかJNDIで解決できない(´・ω・`)

バグ等

known issueというわけでもないですが、実行時にかなりの例外のstacktraceが表示されます。PayaraひいてはGlassfishの内部実装に詳しくないので、この辺は少しずつ対応していきたいと思っていますが、皆さんのご協力を仰ぎたいとも思っております。


余談

最初、このプラグインを作っていたところ、どうしてもGradleのタスク実行フェーズにてpayara-microのインスタンスが起動できなかったのを調べていたら、payara-microの方の問題で起動できないことが判明したので、期せずしてpayara-microにプルリクを送ることになってしまいました。

github.com

PR作って寝て起きたらすでにマージされていました。Payaraチームのフットワークの軽さに脱帽です。