"g"はgrapeのg

Post on 29-Nov-2014

2.619 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

JGGUG新春LT大会2010で使った資料

TRANSCRIPT

JGGUG New Year LT Party / Jan 27th, 2010

“G” は Grape の G“G” IS FOR GRAPE

“The Groovy Adaptable / Advanced Packaging Engine”

Grape?

✤ Maven/Ivyベースのモジュール管理メカニズム

✤ 必要なjarを実行時に自動ダウンロードしてキャッシュ

✤ 依存関係の自動解決

✤ Groovy 1.6から標準装備、1.7で進化

ライブラリとってきたり,クラスパスに設定したりとか,そんなややこしいことを超越して,単に > groovy ほにゃらら.groovyとするだけで全てが解決するのは,なかなか感慨深いものがありますよ。

いまいまさのぶさん

『Groovy 1.6 RC1でgrapeを試す』http://d.hatena.ne.jp/masanobuimai/20081224/1230123639

ふもさん

kiy0takaさん

nobusueさん

ゲンゾウさん

最近、いまさらながらgrapeの機能が便利だな、と思った『groovyスクレイピング & grape』http://genzou-postit.blogspot.com/2009/05/groovy-grape.html

Grapeを利用してTwitter4jのjarを入れなくても使えるように手直ししてみました。『Groovy版Twitterクライアント(@Grab利用)』http://d.hatena.ne.jp/nobusue/20090703/p1

Grapeという機能を使って、勝手にDerbyを落としてきて使ってます。『データベース不要のデータベースクライアントツール「SqlPortable」』http://d.hatena.ne.jp/kiy0taka/20090308/1236459204

自動で最新のcommons-netのjarを取得してきてくれます。便利ですね。『GroovyでFTP by grape』http://d.hatena.ne.jp/fumokmm/20090607/1244391071

まじない一つで強大なJava

パワーを召喚し自在に操る“G” は Gandalf の G?

Groovy

In Groovy 1.6

✤ アノテーション

✤ @Grab(group=’gid’, module=’aid’, version=’ver’)

✤ メソッド呼び出し

✤ Grape.grab(group:’gid’, module:’aid’, version=’ver’)

✤ コマンドラインツール

✤ grape <install|list|resolve>

In Groovy 1.7

✤ アノテーションの制限が緩和

✤ importやpackage、変数宣言にも。一カ所に複数も可に

✤ @Grabパラメータの短縮記法

✤ @Grab(‘gid:aid:ver’)

✤ リゾルバの独自定義

✤ @GrabResolver(name=’repository’, root=’url’)

詳しくはこちら(訳したよ)

✤ Grapeユーザガイド

‣ http://groovy.codehaus.org/Japanese+Grape

✤ Groovy 1.7リリースノート

‣ http://groovy.codehaus.org/Japanese+Groovy+1.7+release+notes

例:フルGroovy対応Webサーバ

@Grab('org.eclipse.jetty:jetty-server:7.0.1.v20091125')@Grab('org.eclipse.jetty:jetty-servlet:7.0.1.v20091125')import org.eclipse.jetty.server.*import org.eclipse.jetty.server.handler.*import org.eclipse.jetty.servlet.*import groovy.servlet.*

server = new Server(8080)servletHandler = new ServletContextHandler(ServletContextHandler.SESSIONS)servletHandler.with { resourceBase = '.' contextPath = '/' addServlet(GroovyServlet, '*.groovy') addServlet(TemplateServlet, '*.gtpl')}resourceHandler = new ResourceHandler( resourceBase:".", welcomeFiles:['index.html'], directoriesListed:true)server.handler = new HandlerList(handlers:[servletHandler, resourceHandler])

server.start()

例:GitHubのコミット情報取得

@GrabResolver(name='HiveDB', root='http://www.hivedb.org/maven/')@Grab('org.hivedb:github-api:1.0')import org.hivedb.github.*

hub = new GitHub('glaforge', 'gaelyk')println "Recent commits in ${hub.userName}/${hub.repository}:"hub.commits.each { c -> println """${c.authorDate} by ${c.author.name}${c.message}${c.url}"""}

例:SmackでGoogle Talk

@Grab('jivesoftware:smack:3.0.4')@Grab('jivesoftware:smackx:3.0.4')import org.jivesoftware.smack.*

(username, password) = ['自分のユーザ名', 'パスワード']to = '相手のユーザ名@gmail.com'

con = new XMPPConnection( new ConnectionConfiguration('talk.google.com', 5222, 'gmail.com'))con.connect()con.login(username, password)chat = con.chatManager.createChat(to, { chat, msg -> chat.sendMessage(msg.body)} as MessageListener) chat.sendMessage("Say something to me. I'll echo it.")

while(true) { sleep 1000 }

まとめ

Grape = 召喚呪文

@Grab

Let’s get Groovy!今年もよろしく

top related