meets
GradleのPayaraプラグイン(unofficial)をリリースしました。
org.mikeneck.payara-pluginで詳細な情報が記述されています。
また、レポジトリーはこちらです。
使い方
プラグインの導入
以下のビルドスクリプトを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にプルリクを送ることになってしまいました。
@mike_neck Thanks it's merged try out the latest unstable when it's built by Jenkins https://t.co/UZtoZCAJhX
— Steve Millidge (@l33tj4v4) 2015, 9月 5
PR作って寝て起きたらすでにマージされていました。Payaraチームのフットワークの軽さに脱帽です。