"g"はgrapeのg
Post on 29-Nov-2014
2.619 Views
Preview:
DESCRIPTION
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