G*ワークショップZ Mar 2013へ行ってきました

金曜の夜、Gradleがテーマの勉強会&懇親会へ行ってきました。

JGGUGさんのイベントに参加するのは、2年ぶり3回目です。

メモを少し取ったので、せっかくなんで上げておきます。

エンタープライズGradle: 林さん

ユーザガイド

上の長大なユーザガイドを和訳されている方とのこと。ありがとうございます><

docbookで書かれてますということで、そのビルドスクリプトの紹介がありました。

gradlew :doc:userGuideHtml でドキュメントが生成されます。

https://github.com/gradle/gradle/blob/master/subprojects/docs/docs.gradle

依存関係の管理

次のようなお話。

第48章 依存関係の管理 http://gradle.monochromeroad.com/docs/userguide/dependency_management.html

Gradleは、依存関係の解決エンジンを最近書き換えたのだそうです。キャッシュ機構の信頼性がエンタープライズ的に十分でない、とGradleを書いている人が思ったからだそうです(よくわからない)。詳しいことは、上のページの「48.9.1. Gradleにおける依存関係キャッシュの重要な機能」を見てね、とのことです。

MavenからGradleへの移行

maven2Gradleでできるよ、というお話。

1.4ではデグレって動かないらしいけど、1.5-rc1では直っているそうです。

プロジェクトでGradleを導入しようとしたらおかしなことになった件: bikisukeさん

(タイトルうろ覚え。すみません)

bikisukeさんがいろいろ苦労されたお話。お疲れさまでした。

  • Pleiadisにプラグイン入れたら「クラスがない」とエラーに
    • Eclipseのプロジェクト上で依存関係が解決できない現象が環境によっては発生
  • eclipseWTPで実行できない

大変そう。。。なんとなく、Gradleを使いたい層とPleiadisを使いたい層は、かぶらないような気がしました^^;

そういえば、本筋ではないですが、Droolshttp://www.jboss.org/drools/)の存在を知りました。

ハンズオン: nobusueさん


(以下はすべて資料にもある話です)

gvm

gvmはbashシェルスクリプトとして書かれたツールです。

gvm list gradleで、利用可能なGradleのバージョンを一覧できます。

gvm use gradle 1.4 とかすれば、バージョンを指定できます。

homeフォルダの下に.gvmというフォルダが作られて、そこに入っていくそうです。

タスクの指定

キャメルケースでタスク名を指定できます。helloWorldタスクは、hWでオッケー(知らなかった。手動で実行する時にはベンリそう)

gradle tasksで、定義されているタスク一覧が表示されます。

ロギングなど

オプション-S -dをつけると詳細な実行ログを出せます。

--dry-run (-m)で、実際の実行はせずに、タスクの実行順序を確認できます。

初期化スクリプト

初期化スクリプトを配置することで、ビルドの開始前に実行できます。

この順に探しにいくそうです。

  • ~/.gradle/init.gradle
  • ~/.gradle/init.d/*.gradle
  • $GRADLE_HOME/init.d/*.gradle

--init-script(-I)で指定することもできるようです。

高速化

gradle --daemon タスク名

で、Gradle用のプロセスが常駐するようになり、速くなります。gradleservと同じ仕組み、とおっしゃっていました。

--stopで、プロセスの利用を停止できます。

GUI

gradle guiGUIを持つツールが起動します。タスク一覧が見やすいです。

Favoriteタブに何か書くと、プロジェクトディレクトリにファイルを保存してくれる?のかな?

javaプラグイン、groovyプラグイン

それぞれ追加のタスクを自動的に足してくれます。

プラグインによって追加されたタスクも、gradle tasksで一覧表示できます。

warプラグイン、Jettyプラグイン

たくさんタスクが追加されます。Jettyプラグインは、組み込みサーバの起動もできます。

gradleのjettyプラグインは、Servlet3.0未対応だそうですが。

これだけは覚えて帰ってね!の便利メソッド
  • file()
  • files()
  • fileTree()
  • logger
    • 標準出力への出力をすべてQUIETにリダイレクトしてくれます

詳細はnobusueさんの資料をご覧ください。

ビルドスクリプト

このあたりの構文のお話。

IDEまわりの情報

Eclipseのgradleプラグインは、SpringSourceのツールです。dsl Descriptionというものを入れると、gradleのコード補完をしてくれます。

文字コードの問題解決

NTTソフトさんのこの記事を読みましょう。

というわけで

ビルドスクリプト作成に王道なんかないんや、といいますか、やはり分からないところはドキュメントとコードを読んで何とかするしかないのね、ということが分かりました。面白かったです。

懇親会もとても楽しかったです。ネットでは何年も前からお世話になってるorangecloverさんに初めてお会いできたのも、ラッキーでした。

会場提供してくださったNTTソフトさん、JGGUGの皆さん、発表された方、懇親会でお話ししてくださった皆さん、ありがとうございました。