home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Groovy/GroovyServ メモ

Groovy/GroovyServ メモ

Groovy / GroovyServ メモ
id: 1159 所有者: msakamoto-sf    作成日: 2013-03-09 23:03:02
カテゴリ: Groovy 

公式 : http://kobo.github.com/groovyserv/index.html

Windowsでのインストール

インストーラもありますが、win用のバイナリのzipファイルが配布されてますので、そちらを展開して環境変数を調整するだけでもOKです。というかそちらの方法しか試してません。

自分はCygwin使いですので、Cygwinの.bashrcでこんな感じにしてます。

# Groovy
GROOVY_HOME=/cygdrive/c/work/apps/groovy-1.8.9
export PATH=$GROOVY_HOME/bin:$PATH

# GroovyServ
GROOVYSERV_HOME=/cygdrive/c/work/apps/groovyserv-0.11
export PATH=$GROOVYSERV_HOME/bin:$PATH
alias gr='groovyclient'

"GROOVYSERV_HOME"は本来は不要で、binにpathが通ってればオッケーなんですが、見た目が揃ってるので入れてます。また、"groovyclient"もタイピングが長いので"gr"にalias設定してます。

使い方

まずgroovyserverを起動します。

$ groovyserver
Groovy home directory: /cygdrive/c/in_vitro/devtools/groovy-1.8.9
Groovy command path: /cygdrive/c/in_vitro/devtools/groovy-1.8.9/bin/groovy (found at GROOVY_HOME)
GroovyServ home directory: /cygdrive/c/in_vitro/devtools/groovyserv-0.11
GroovyServ work directory: /home/FengJing/.groovy/groovyserv
Original classpath: (none)
GroovyServ default classpath: /cygdrive/c/in_vitro/devtools/groovyserv-0.11/lib/*
Starting....
groovyserver 224(1961) is successfully started

あとはGroovyスクリプトを書いて、groovyclientで実行するだけです。

groovyserverを止めたい場合は"-k"付きで実行します。

$ groovyserver -k
Groovy home directory: /cygdrive/c/in_vitro/devtools/groovy-1.8.9
Groovy command path: /cygdrive/c/in_vitro/devtools/groovy-1.8.9/bin/groovy (found at GROOVY_HOME)
GroovyServ home directory: /cygdrive/c/in_vitro/devtools/groovyserv-0.11
GroovyServ work directory: /home/FengJing/.groovy/groovyserv
Original classpath: (none)
GroovyServ default classpath: /cygdrive/c/in_vitro/devtools/groovyserv-0.11/lib/*
Killed groovyserver of 224(1961)

簡単ですね。たったこれだけの手間で、Groovyスクリプトの実行が爆速になります。

"@GrabConfig(systemClassLoader=true)"を使う時の注意点

通常はgroovyclientによる実行のたびにクラスローダが生成されて"@Grab"で依存関係が読み込まれます。クラスのstaticフィールドなんかもそうですが、つまり、通常は実行のたびにクラスローダがリセットされると考えてよいでしょう。

ただし、当然groovyserver側でシステムクラスローダなどで読み込まれたクラスは残ります。

それで注意が必要なのが、"@GrabConfig(systemClassLoader=true)"を使う場合です。これを使うと、"@Grab"したのが(多分)groovyserver側のシステムクラスローダに読み込まれます。ということは、初回にロードされたものが以降もずっと残ることになります。

この挙動は、システムクラスローダで読み込まれたライブラリが設定ファイルを読み込むときに、初回に読み込まれた設定がずっと残り続け、設定ファイルを書き換えても反映されないという挙動につながります。slf4j + logbackでlogback.groovyを読み込む場合が該当したりしてます。

この場合は、groovyserverを再起動する他ありません。

$ groovyserver -r
Groovy home directory: /cygdrive/c/in_vitro/devtools/groovy-1.8.9
Groovy command path: /cygdrive/c/in_vitro/devtools/groovy-1.8.9/bin/groovy (found at GROOVY_HOME)
GroovyServ home directory: /cygdrive/c/in_vitro/devtools/groovyserv-0.11
GroovyServ work directory: /home/FengJing/.groovy/groovyserv
Original classpath: (none)
GroovyServ default classpath: /cygdrive/c/in_vitro/devtools/groovyserv-0.11/lib/*
Killed groovyserver of 6672(1961)
Restarting groovyserver
Starting....
groovyserver 7936(1961) is successfully started

"@Grab"使えるの?とか、クラスのstaticフィールドどうなるの?とかは、GroovyServのFAQページにあったりします:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-03-09 23:17:17
md5:84bd9dbcc8089e6b01d6a3d71e124267
sha1:ab0996fa0a0570fd8ba02783308637e37193db69
コメント
コメントを投稿するにはログインして下さい。